diff --git a/dist/vis.css b/dist/vis.css
index 81c94194..f163bd4e 100644
--- a/dist/vis.css
+++ b/dist/vis.css
@@ -791,4 +791,17 @@ div.network-navigation.zoomExtends {
background-image: url("img/network/zoomExtends.png");
bottom:50px;
right:15px;
+}
+div.network-tooltip {
+ position: absolute;
+ visibility: hidden;
+ padding: 5px;
+ white-space: nowrap;
+
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ border: 1px solid;
+
+ box-shadow: 3px 3px 10px rgba(128, 128, 128, 0.5);
}
\ No newline at end of file
diff --git a/dist/vis.js b/dist/vis.js
index 0541a5fa..9405c42d 100644
--- a/dist/vis.js
+++ b/dist/vis.js
@@ -4,8 +4,8 @@
*
* A dynamic, browser-based visualization library.
*
- * @version 3.9.1
- * @date 2015-01-22
+ * @version 3.10.0
+ * @date 2015-02-11
*
* @license
* Copyright (C) 2011-2014 Almende B.V, http://almende.com
@@ -175,6 +175,26 @@ return /******/ (function(modules) { // webpackBootstrap
return (object instanceof Number || typeof object == 'number');
};
+
+ /**
+ * this function gives you a range between 0 and 1 based on the min and max values in the set, the total sum of all values and the current value.
+ *
+ * @param min
+ * @param max
+ * @param total
+ * @param value
+ * @returns {number}
+ */
+ exports.giveRange = function(min,max,total,value) {
+ if (max == min) {
+ return 0.5;
+ }
+ else {
+ var scale = 1 / (max - min);
+ return Math.max(0,(value - min)*scale);
+ }
+ }
+
/**
* Test whether given object is a string
* @param {*} object
@@ -919,6 +939,28 @@ return /******/ (function(modules) { // webpackBootstrap
} : null;
};
+ /**
+ * This function takes color in hex format or rgb() or rgba() format and overrides the opacity. Returns rgba() string.
+ * @param color
+ * @param opacity
+ * @returns {*}
+ */
+ exports.overrideOpacity = function(color,opacity) {
+ if (color.indexOf("rgb") != -1) {
+ var rgb = color.substr(color.indexOf("(")+1).replace(")","").split(",");
+ return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + opacity + ")"
+ }
+ else {
+ var rgb = exports.hexToRGB(color);
+ if (rgb == null) {
+ return color;
+ }
+ else {
+ return "rgba(" + rgb.r + "," + rgb.g + "," + rgb.b + "," + opacity + ")"
+ }
+ }
+ }
+
/**
*
* @param red 0 -- 255
@@ -1634,6 +1676,7 @@ return /******/ (function(modules) { // webpackBootstrap
this._options = options || {};
this._data = {}; // map with data indexed by id
+ this.length = 0; // number of items in the DataSet
this._fieldId = this._options.fieldId || 'id'; // name of the field containing id
this._type = {}; // internal field types (NOTE: this can differ from this._options.type)
@@ -2231,12 +2274,16 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Filter the fields of an item
- * @param {Object} item
+ * @param {Object | null} item
* @param {String[]} fields Field names
- * @return {Object} filteredItem
+ * @return {Object | null} filteredItem or null if no item is provided
* @private
*/
DataSet.prototype._filterFields = function (item, fields) {
+ if (!item) { // item is null
+ return item;
+ }
+
var filteredItem = {};
for (var field in item) {
@@ -2318,6 +2365,7 @@ return /******/ (function(modules) { // webpackBootstrap
if (util.isNumber(id) || util.isString(id)) {
if (this._data[id]) {
delete this._data[id];
+ this.length--;
return id;
}
}
@@ -2325,6 +2373,7 @@ return /******/ (function(modules) { // webpackBootstrap
var itemId = id[this._fieldId];
if (itemId && this._data[itemId]) {
delete this._data[itemId];
+ this.length--;
return itemId;
}
}
@@ -2340,6 +2389,7 @@ return /******/ (function(modules) { // webpackBootstrap
var ids = Object.keys(this._data);
this._data = {};
+ this.length = 0;
this._trigger('remove', {items: ids}, senderId);
@@ -2465,6 +2515,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
this._data[id] = d;
+ this.length++;
return id;
};
@@ -2590,6 +2641,7 @@ return /******/ (function(modules) { // webpackBootstrap
function DataView (data, options) {
this._data = null;
this._ids = {}; // ids of the items currently in memory (just contains a boolean true)
+ this.length = 0; // number of items in the DataView
this._options = options || {};
this._fieldId = 'id'; // name of the field containing id
this._subscribers = {}; // event subscribers
@@ -2626,6 +2678,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
this._ids = {};
+ this.length = 0;
this._trigger('remove', {items: ids});
}
@@ -2643,6 +2696,7 @@ return /******/ (function(modules) { // webpackBootstrap
id = ids[i];
this._ids[id] = true;
}
+ this.length = ids.length;
this._trigger('add', {items: ids});
// subscribe to new dataset
@@ -2652,6 +2706,48 @@ return /******/ (function(modules) { // webpackBootstrap
}
};
+ /**
+ * Refresh the DataView. Useful when the DataView has a filter function
+ * containing a variable parameter.
+ */
+ DataView.prototype.refresh = function () {
+ var id;
+ var ids = this._data.getIds({filter: this._options && this._options.filter});
+ var newIds = {};
+ var added = [];
+ var removed = [];
+
+ // check for additions
+ for (var i = 0; i < ids.length; i++) {
+ id = ids[i];
+ newIds[id] = true;
+ if (!this._ids[id]) {
+ added.push(id);
+ this._ids[id] = true;
+ this.length++;
+ }
+ }
+
+ // check for removals
+ for (id in this._ids) {
+ if (this._ids.hasOwnProperty(id)) {
+ if (!newIds[id]) {
+ removed.push(id);
+ delete this._ids[id];
+ this.length--;
+ }
+ }
+ }
+
+ // trigger events
+ if (added.length) {
+ this._trigger('add', {items: added});
+ }
+ if (removed.length) {
+ this._trigger('remove', {items: removed});
+ }
+ };
+
/**
* Get data from the data view
*
@@ -2853,6 +2949,8 @@ return /******/ (function(modules) { // webpackBootstrap
break;
}
+ this.length += added.length - removed.length;
+
if (added.length) {
this._trigger('add', {items: added}, senderId);
}
@@ -6405,322 +6503,13 @@ return /******/ (function(modules) { // webpackBootstrap
},
hiddenDates: [],
util: {
- snap: null, // will be specified after TimeAxis is created
- toScreen: me._toScreen.bind(me),
- toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width
- toTime: me._toTime.bind(me),
- toGlobalTime : me._toGlobalTime.bind(me)
- }
- };
-
- // range
- this.range = new Range(this.body);
- this.components.push(this.range);
- this.body.range = this.range;
-
- // time axis
- this.timeAxis = new TimeAxis(this.body);
- this.components.push(this.timeAxis);
- this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis);
-
- // current time bar
- this.currentTime = new CurrentTime(this.body);
- this.components.push(this.currentTime);
-
- // custom time bar
- // Note: time bar will be attached in this.setOptions when selected
- this.customTime = new CustomTime(this.body);
- this.components.push(this.customTime);
-
- // item set
- this.itemSet = new ItemSet(this.body);
- this.components.push(this.itemSet);
-
- this.itemsData = null; // DataSet
- this.groupsData = null; // DataSet
-
- // apply options
- if (options) {
- this.setOptions(options);
- }
-
- // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!
- if (groups) {
- this.setGroups(groups);
- }
-
- // create itemset
- if (items) {
- this.setItems(items);
- }
- else {
- this.redraw();
- }
- }
-
- // Extend the functionality from Core
- Timeline.prototype = new Core();
-
- /**
- * Set items
- * @param {vis.DataSet | Array | google.visualization.DataTable | null} items
- */
- Timeline.prototype.setItems = function(items) {
- var initialLoad = (this.itemsData == null);
-
- // convert to type DataSet when needed
- var newDataSet;
- if (!items) {
- newDataSet = null;
- }
- else if (items instanceof DataSet || items instanceof DataView) {
- newDataSet = items;
- }
- else {
- // turn an array into a dataset
- newDataSet = new DataSet(items, {
- type: {
- start: 'Date',
- end: 'Date'
- }
- });
- }
-
- // set items
- this.itemsData = newDataSet;
- this.itemSet && this.itemSet.setItems(newDataSet);
-
- if (initialLoad) {
- if (this.options.start != undefined || this.options.end != undefined) {
- if (this.options.start == undefined || this.options.end == undefined) {
- var dataRange = this._getDataRange();
- }
-
- var start = this.options.start != undefined ? this.options.start : dataRange.start;
- var end = this.options.end != undefined ? this.options.end : dataRange.end;
-
- this.setWindow(start, end, {animate: false});
- }
- else {
- this.fit({animate: false});
- }
- }
- };
-
- /**
- * Set groups
- * @param {vis.DataSet | Array | google.visualization.DataTable} groups
- */
- Timeline.prototype.setGroups = function(groups) {
- // convert to type DataSet when needed
- var newDataSet;
- if (!groups) {
- newDataSet = null;
- }
- else if (groups instanceof DataSet || groups instanceof DataView) {
- newDataSet = groups;
- }
- else {
- // turn an array into a dataset
- newDataSet = new DataSet(groups);
- }
-
- this.groupsData = newDataSet;
- this.itemSet.setGroups(newDataSet);
- };
-
- /**
- * Set selected items by their id. Replaces the current selection
- * Unknown id's are silently ignored.
- * @param {string[] | string} [ids] An array with zero or more id's of the items to be
- * selected. If ids is an empty array, all items will be
- * unselected.
- * @param {Object} [options] Available options:
- * `focus: boolean`
- * If true, focus will be set to the selected item(s)
- * `animate: boolean | number`
- * If true (default), the range is animated
- * smoothly to the new window.
- * If a number, the number is taken as duration
- * for the animation. Default duration is 500 ms.
- * Only applicable when option focus is true.
- */
- Timeline.prototype.setSelection = function(ids, options) {
- this.itemSet && this.itemSet.setSelection(ids);
-
- if (options && options.focus) {
- this.focus(ids, options);
- }
- };
-
- /**
- * Get the selected items by their id
- * @return {Array} ids The ids of the selected items
- */
- Timeline.prototype.getSelection = function() {
- return this.itemSet && this.itemSet.getSelection() || [];
- };
-
- /**
- * Adjust the visible window such that the selected item (or multiple items)
- * are centered on screen.
- * @param {String | String[]} id An item id or array with item ids
- * @param {Object} [options] Available options:
- * `animate: boolean | number`
- * If true (default), the range is animated
- * smoothly to the new window.
- * If a number, the number is taken as duration
- * for the animation. Default duration is 500 ms.
- * Only applicable when option focus is true
- */
- Timeline.prototype.focus = function(id, options) {
- if (!this.itemsData || id == undefined) return;
-
- var ids = Array.isArray(id) ? id : [id];
-
- // get the specified item(s)
- var itemsData = this.itemsData.getDataSet().get(ids, {
- type: {
- start: 'Date',
- end: 'Date'
- }
- });
-
- // calculate minimum start and maximum end of specified items
- var start = null;
- var end = null;
- itemsData.forEach(function (itemData) {
- var s = itemData.start.valueOf();
- var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf();
-
- if (start === null || s < start) {
- start = s;
- }
-
- if (end === null || e > end) {
- end = e;
- }
- });
-
- if (start !== null && end !== null) {
- // calculate the new middle and interval for the window
- var middle = (start + end) / 2;
- var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1);
-
- var animate = (options && options.animate !== undefined) ? options.animate : true;
- this.range.setRange(middle - interval / 2, middle + interval / 2, animate);
- }
- };
-
- /**
- * Get the data range of the item set.
- * @returns {{min: Date, max: Date}} range A range with a start and end Date.
- * When no minimum is found, min==null
- * When no maximum is found, max==null
- */
- Timeline.prototype.getItemRange = function() {
- // calculate min from start filed
- var dataset = this.itemsData.getDataSet(),
- min = null,
- max = null;
-
- if (dataset) {
- // calculate the minimum value of the field 'start'
- var minItem = dataset.min('start');
- min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null;
- // Note: we convert first to Date and then to number because else
- // a conversion from ISODate to Number will fail
-
- // calculate maximum value of fields 'start' and 'end'
- var maxStartItem = dataset.max('start');
- if (maxStartItem) {
- max = util.convert(maxStartItem.start, 'Date').valueOf();
- }
- var maxEndItem = dataset.max('end');
- if (maxEndItem) {
- if (max == null) {
- max = util.convert(maxEndItem.end, 'Date').valueOf();
- }
- else {
- max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf());
- }
- }
- }
-
- return {
- min: (min != null) ? new Date(min) : null,
- max: (max != null) ? new Date(max) : null
- };
- };
-
-
- module.exports = Timeline;
-
-
-/***/ },
-/* 14 */
-/***/ function(module, exports, __webpack_require__) {
-
- var Emitter = __webpack_require__(56);
- var Hammer = __webpack_require__(45);
- var util = __webpack_require__(1);
- var DataSet = __webpack_require__(3);
- var DataView = __webpack_require__(4);
- var Range = __webpack_require__(17);
- var Core = __webpack_require__(46);
- var TimeAxis = __webpack_require__(35);
- var CurrentTime = __webpack_require__(26);
- var CustomTime = __webpack_require__(27);
- var LineGraph = __webpack_require__(34);
-
- /**
- * Create a timeline visualization
- * @param {HTMLElement} container
- * @param {vis.DataSet | Array | google.visualization.DataTable} [items]
- * @param {Object} [options] See Graph2d.setOptions for the available options.
- * @constructor
- * @extends Core
- */
- 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,
- end: null,
-
- autoResize: true,
-
- orientation: 'bottom',
- width: null,
- height: null,
- maxHeight: null,
- minHeight: null
- };
- this.options = util.deepExtend({}, this.defaultOptions);
-
- // Create the DOM, props, and emitter
- this._create(container);
-
- // all components listed here will be repainted automatically
- this.components = [];
+ getScale: function () {
+ return me.timeAxis.step.scale;
+ },
+ getStep: function () {
+ return me.timeAxis.step.step;
+ },
- 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, // will be specified after TimeAxis is created
toScreen: me._toScreen.bind(me),
toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width
toTime: me._toTime.bind(me),
@@ -6736,7 +6525,330 @@ return /******/ (function(modules) { // webpackBootstrap
// time axis
this.timeAxis = new TimeAxis(this.body);
this.components.push(this.timeAxis);
- this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis);
+
+ // current time bar
+ this.currentTime = new CurrentTime(this.body);
+ this.components.push(this.currentTime);
+
+ // custom time bar
+ // Note: time bar will be attached in this.setOptions when selected
+ this.customTime = new CustomTime(this.body);
+ this.components.push(this.customTime);
+
+ // item set
+ this.itemSet = new ItemSet(this.body);
+ this.components.push(this.itemSet);
+
+ this.itemsData = null; // DataSet
+ this.groupsData = null; // DataSet
+
+ // apply options
+ if (options) {
+ this.setOptions(options);
+ }
+
+ // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!
+ if (groups) {
+ this.setGroups(groups);
+ }
+
+ // create itemset
+ if (items) {
+ this.setItems(items);
+ }
+ else {
+ this._redraw();
+ }
+ }
+
+ // Extend the functionality from Core
+ Timeline.prototype = new Core();
+
+ /**
+ * Force a redraw. The size of all items will be recalculated.
+ * Can be useful to manually redraw when option autoResize=false and the window
+ * has been resized, or when the items CSS has been changed.
+ */
+ Timeline.prototype.redraw = function() {
+ this.itemSet && this.itemSet.markDirty({refreshItems: true});
+ this._redraw();
+ };
+
+ /**
+ * Set items
+ * @param {vis.DataSet | Array | google.visualization.DataTable | null} items
+ */
+ Timeline.prototype.setItems = function(items) {
+ var initialLoad = (this.itemsData == null);
+
+ // convert to type DataSet when needed
+ var newDataSet;
+ if (!items) {
+ newDataSet = null;
+ }
+ else if (items instanceof DataSet || items instanceof DataView) {
+ newDataSet = items;
+ }
+ else {
+ // turn an array into a dataset
+ newDataSet = new DataSet(items, {
+ type: {
+ start: 'Date',
+ end: 'Date'
+ }
+ });
+ }
+
+ // set items
+ this.itemsData = newDataSet;
+ this.itemSet && this.itemSet.setItems(newDataSet);
+
+ if (initialLoad) {
+ if (this.options.start != undefined || this.options.end != undefined) {
+ if (this.options.start == undefined || this.options.end == undefined) {
+ var dataRange = this._getDataRange();
+ }
+
+ var start = this.options.start != undefined ? this.options.start : dataRange.start;
+ var end = this.options.end != undefined ? this.options.end : dataRange.end;
+
+ this.setWindow(start, end, {animate: false});
+ }
+ else {
+ this.fit({animate: false});
+ }
+ }
+ };
+
+ /**
+ * Set groups
+ * @param {vis.DataSet | Array | google.visualization.DataTable} groups
+ */
+ Timeline.prototype.setGroups = function(groups) {
+ // convert to type DataSet when needed
+ var newDataSet;
+ if (!groups) {
+ newDataSet = null;
+ }
+ else if (groups instanceof DataSet || groups instanceof DataView) {
+ newDataSet = groups;
+ }
+ else {
+ // turn an array into a dataset
+ newDataSet = new DataSet(groups);
+ }
+
+ this.groupsData = newDataSet;
+ this.itemSet.setGroups(newDataSet);
+ };
+
+ /**
+ * Set selected items by their id. Replaces the current selection
+ * Unknown id's are silently ignored.
+ * @param {string[] | string} [ids] An array with zero or more id's of the items to be
+ * selected. If ids is an empty array, all items will be
+ * unselected.
+ * @param {Object} [options] Available options:
+ * `focus: boolean`
+ * If true, focus will be set to the selected item(s)
+ * `animate: boolean | number`
+ * If true (default), the range is animated
+ * smoothly to the new window.
+ * If a number, the number is taken as duration
+ * for the animation. Default duration is 500 ms.
+ * Only applicable when option focus is true.
+ */
+ Timeline.prototype.setSelection = function(ids, options) {
+ this.itemSet && this.itemSet.setSelection(ids);
+
+ if (options && options.focus) {
+ this.focus(ids, options);
+ }
+ };
+
+ /**
+ * Get the selected items by their id
+ * @return {Array} ids The ids of the selected items
+ */
+ Timeline.prototype.getSelection = function() {
+ return this.itemSet && this.itemSet.getSelection() || [];
+ };
+
+ /**
+ * Adjust the visible window such that the selected item (or multiple items)
+ * are centered on screen.
+ * @param {String | String[]} id An item id or array with item ids
+ * @param {Object} [options] Available options:
+ * `animate: boolean | number`
+ * If true (default), the range is animated
+ * smoothly to the new window.
+ * If a number, the number is taken as duration
+ * for the animation. Default duration is 500 ms.
+ * Only applicable when option focus is true
+ */
+ Timeline.prototype.focus = function(id, options) {
+ if (!this.itemsData || id == undefined) return;
+
+ var ids = Array.isArray(id) ? id : [id];
+
+ // get the specified item(s)
+ var itemsData = this.itemsData.getDataSet().get(ids, {
+ type: {
+ start: 'Date',
+ end: 'Date'
+ }
+ });
+
+ // calculate minimum start and maximum end of specified items
+ var start = null;
+ var end = null;
+ itemsData.forEach(function (itemData) {
+ var s = itemData.start.valueOf();
+ var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf();
+
+ if (start === null || s < start) {
+ start = s;
+ }
+
+ if (end === null || e > end) {
+ end = e;
+ }
+ });
+
+ if (start !== null && end !== null) {
+ // calculate the new middle and interval for the window
+ var middle = (start + end) / 2;
+ var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1);
+
+ var animate = (options && options.animate !== undefined) ? options.animate : true;
+ this.range.setRange(middle - interval / 2, middle + interval / 2, animate);
+ }
+ };
+
+ /**
+ * Get the data range of the item set.
+ * @returns {{min: Date, max: Date}} range A range with a start and end Date.
+ * When no minimum is found, min==null
+ * When no maximum is found, max==null
+ */
+ Timeline.prototype.getItemRange = function() {
+ // calculate min from start filed
+ var dataset = this.itemsData.getDataSet(),
+ min = null,
+ max = null;
+
+ if (dataset) {
+ // calculate the minimum value of the field 'start'
+ var minItem = dataset.min('start');
+ min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null;
+ // Note: we convert first to Date and then to number because else
+ // a conversion from ISODate to Number will fail
+
+ // calculate maximum value of fields 'start' and 'end'
+ var maxStartItem = dataset.max('start');
+ if (maxStartItem) {
+ max = util.convert(maxStartItem.start, 'Date').valueOf();
+ }
+ var maxEndItem = dataset.max('end');
+ if (maxEndItem) {
+ if (max == null) {
+ max = util.convert(maxEndItem.end, 'Date').valueOf();
+ }
+ else {
+ max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf());
+ }
+ }
+ }
+
+ return {
+ min: (min != null) ? new Date(min) : null,
+ max: (max != null) ? new Date(max) : null
+ };
+ };
+
+
+ module.exports = Timeline;
+
+
+/***/ },
+/* 14 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Emitter = __webpack_require__(56);
+ var Hammer = __webpack_require__(45);
+ var util = __webpack_require__(1);
+ var DataSet = __webpack_require__(3);
+ var DataView = __webpack_require__(4);
+ var Range = __webpack_require__(17);
+ var Core = __webpack_require__(46);
+ var TimeAxis = __webpack_require__(35);
+ var CurrentTime = __webpack_require__(26);
+ var CustomTime = __webpack_require__(27);
+ var LineGraph = __webpack_require__(34);
+
+ /**
+ * Create a timeline visualization
+ * @param {HTMLElement} container
+ * @param {vis.DataSet | Array | google.visualization.DataTable} [items]
+ * @param {Object} [options] See Graph2d.setOptions for the available options.
+ * @constructor
+ * @extends Core
+ */
+ 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,
+ end: null,
+
+ autoResize: true,
+
+ orientation: 'bottom',
+ width: null,
+ height: null,
+ maxHeight: null,
+ minHeight: null
+ };
+ this.options = util.deepExtend({}, this.defaultOptions);
+
+ // Create the DOM, props, and emitter
+ this._create(container);
+
+ // all components listed here will be repainted automatically
+ this.components = [];
+
+ this.body = {
+ dom: this.dom,
+ domProps: this.props,
+ emitter: {
+ on: this.on.bind(this),
+ off: this.off.bind(this),
+ emit: this.emit.bind(this)
+ },
+ hiddenDates: [],
+ util: {
+ toScreen: me._toScreen.bind(me),
+ toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width
+ toTime: me._toTime.bind(me),
+ toGlobalTime : me._toGlobalTime.bind(me)
+ }
+ };
+
+ // range
+ this.range = new Range(this.body);
+ this.components.push(this.range);
+ this.body.range = this.range;
+
+ // time axis
+ this.timeAxis = new TimeAxis(this.body);
+ this.components.push(this.timeAxis);
+ //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis);
// current time bar
this.currentTime = new CurrentTime(this.body);
@@ -6769,7 +6881,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.setItems(items);
}
else {
- this.redraw();
+ this._redraw();
}
}
@@ -7634,18 +7746,6 @@ return /******/ (function(modules) { // webpackBootstrap
return toPrecision;
};
-
-
- /**
- * Snap a date to a rounded value.
- * The snap intervals are dependent on the current scale and step.
- * @param {Date} date the date to be snapped.
- * @return {Date} snappedDate
- */
- DataStep.prototype.snap = function(date) {
-
- };
-
/**
* Check if the current value is a major value (for example when the step
* is DAY, a major value is each first day of the MONTH)
@@ -7821,7 +7921,7 @@ return /******/ (function(modules) { // webpackBootstrap
me.animateTimer = setTimeout(next, 20);
}
}
- }
+ };
return next();
}
@@ -7915,7 +8015,7 @@ return /******/ (function(modules) { // webpackBootstrap
zoomMin = 0;
}
if ((newEnd - newStart) < zoomMin) {
- if ((this.end - this.start) === zoomMin) {
+ if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) {
// ignore this action, we are already zoomed to the minimum
newStart = this.start;
newEnd = this.end;
@@ -7935,8 +8035,9 @@ return /******/ (function(modules) { // webpackBootstrap
if (zoomMax < 0) {
zoomMax = 0;
}
+
if ((newEnd - newStart) > zoomMax) {
- if ((this.end - this.start) === zoomMax) {
+ if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) {
// ignore this action, we are already zoomed to the maximum
newStart = this.start;
newEnd = this.end;
@@ -7952,7 +8053,7 @@ return /******/ (function(modules) { // webpackBootstrap
var changed = (this.start != newStart || this.end != newEnd);
- // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not neccesarily of type Range)
+ // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range)
if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) &&
!((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) {
this.body.emitter.emit('checkRangedItems');
@@ -8720,23 +8821,22 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Set a custom scale. Autoscaling will be disabled.
- * For example setScale(SCALE.MINUTES, 5) will result
+ * For example setScale('minute', 5) will result
* in minor steps of 5 minutes, and major steps of an hour.
*
- * @param {string} newScale
- * A scale. Choose from 'millisecond, 'second,
- * 'minute', 'hour', 'weekday, 'day, 'month, 'year'.
- * @param {Number} newStep A step size, by default 1. Choose for
- * example 1, 2, 5, or 10.
+ * @param {{scale: string, step: number}} params
+ * An object containing two properties:
+ * - A string 'scale'. Choose from 'millisecond', 'second',
+ * 'minute', 'hour', 'weekday, 'day, 'month, 'year'.
+ * - A number 'step'. A step size, by default 1.
+ * Choose for example 1, 2, 5, or 10.
*/
- TimeStep.prototype.setScale = function(newScale, newStep) {
- this.scale = newScale;
-
- if (newStep > 0) {
- this.step = newStep;
+ TimeStep.prototype.setScale = function(params) {
+ if (params && typeof params.scale == 'string') {
+ this.scale = params.scale;
+ this.step = params.step > 0 ? params.step : 1;
+ this.autoScale = false;
}
-
- this.autoScale = false;
};
/**
@@ -8802,15 +8902,19 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Snap a date to a rounded value.
* The snap intervals are dependent on the current scale and step.
- * @param {Date} date the date to be snapped.
+ * Static function
+ * @param {Date} date the date to be snapped.
+ * @param {string} scale Current scale, can be 'millisecond', 'second',
+ * 'minute', 'hour', 'weekday, 'day, 'month, 'year'.
+ * @param {number} step Current step (1, 2, 4, 5, ...
* @return {Date} snappedDate
*/
- TimeStep.prototype.snap = function(date) {
+ TimeStep.snap = function(date, scale, step) {
var clone = new Date(date.valueOf());
- if (this.scale == 'year') {
+ if (scale == 'year') {
var year = clone.getFullYear() + Math.round(clone.getMonth() / 12);
- clone.setFullYear(Math.round(year / this.step) * this.step);
+ clone.setFullYear(Math.round(year / step) * step);
clone.setMonth(0);
clone.setDate(0);
clone.setHours(0);
@@ -8818,7 +8922,7 @@ return /******/ (function(modules) { // webpackBootstrap
clone.setSeconds(0);
clone.setMilliseconds(0);
}
- else if (this.scale == 'month') {
+ else if (scale == 'month') {
if (clone.getDate() > 15) {
clone.setDate(1);
clone.setMonth(clone.getMonth() + 1);
@@ -8833,9 +8937,9 @@ return /******/ (function(modules) { // webpackBootstrap
clone.setSeconds(0);
clone.setMilliseconds(0);
}
- else if (this.scale == 'day') {
+ else if (scale == 'day') {
//noinspection FallthroughInSwitchStatementJS
- switch (this.step) {
+ switch (step) {
case 5:
case 2:
clone.setHours(Math.round(clone.getHours() / 24) * 24); break;
@@ -8846,9 +8950,9 @@ return /******/ (function(modules) { // webpackBootstrap
clone.setSeconds(0);
clone.setMilliseconds(0);
}
- else if (this.scale == 'weekday') {
+ else if (scale == 'weekday') {
//noinspection FallthroughInSwitchStatementJS
- switch (this.step) {
+ switch (step) {
case 5:
case 2:
clone.setHours(Math.round(clone.getHours() / 12) * 12); break;
@@ -8859,8 +8963,8 @@ return /******/ (function(modules) { // webpackBootstrap
clone.setSeconds(0);
clone.setMilliseconds(0);
}
- else if (this.scale == 'hour') {
- switch (this.step) {
+ else if (scale == 'hour') {
+ switch (step) {
case 4:
clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break;
default:
@@ -8868,9 +8972,9 @@ return /******/ (function(modules) { // webpackBootstrap
}
clone.setSeconds(0);
clone.setMilliseconds(0);
- } else if (this.scale == 'minute') {
+ } else if (scale == 'minute') {
//noinspection FallthroughInSwitchStatementJS
- switch (this.step) {
+ switch (step) {
case 15:
case 10:
clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5);
@@ -8883,9 +8987,9 @@ return /******/ (function(modules) { // webpackBootstrap
}
clone.setMilliseconds(0);
}
- else if (this.scale == 'second') {
+ else if (scale == 'second') {
//noinspection FallthroughInSwitchStatementJS
- switch (this.step) {
+ switch (step) {
case 15:
case 10:
clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5);
@@ -8897,9 +9001,9 @@ return /******/ (function(modules) { // webpackBootstrap
clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break;
}
}
- else if (this.scale == 'millisecond') {
- var step = this.step > 5 ? this.step / 2 : 1;
- clone.setMilliseconds(Math.round(clone.getMilliseconds() / step) * step);
+ else if (scale == 'millisecond') {
+ var _step = step > 5 ? step / 2 : 1;
+ clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step);
}
return clone;
@@ -11350,16 +11454,6 @@ return /******/ (function(modules) { // webpackBootstrap
}
};
- /**
- * Snap a date to a rounded value.
- * The snap intervals are dependent on the current scale and step.
- * @param {Date} date the date to be snapped.
- * @return {Date} snappedDate
- */
- DataAxis.prototype.snap = function(date) {
- return this.step.snap(date);
- };
-
module.exports = DataAxis;
@@ -12214,6 +12308,7 @@ return /******/ (function(modules) { // webpackBootstrap
var util = __webpack_require__(1);
var DataSet = __webpack_require__(3);
var DataView = __webpack_require__(4);
+ var TimeStep = __webpack_require__(19);
var Component = __webpack_require__(25);
var Group = __webpack_require__(30);
var BackgroundGroup = __webpack_require__(31);
@@ -12253,6 +12348,8 @@ return /******/ (function(modules) { // webpackBootstrap
remove: false
},
+ snap: TimeStep.snap,
+
onAdd: function (item, callback) {
callback(item);
},
@@ -12483,7 +12580,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','hide'];
+ var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap'];
util.selectiveExtend(fields, this.options, options);
if ('margin' in options) {
@@ -12536,11 +12633,20 @@ return /******/ (function(modules) { // webpackBootstrap
};
/**
- * Mark the ItemSet dirty so it will refresh everything with next redraw
+ * Mark the ItemSet dirty so it will refresh everything with next redraw.
+ * Optionally, all items can be marked as dirty and be refreshed.
+ * @param {{refreshItems: boolean}} [options]
*/
- ItemSet.prototype.markDirty = function() {
+ ItemSet.prototype.markDirty = function(options) {
this.groupIds = [];
this.stackDirty = true;
+
+ if (options && options.refreshItems) {
+ util.forEach(this.items, function (item) {
+ item.dirty = true;
+ if (item.displayed) item.redraw();
+ });
+ }
};
/**
@@ -13342,8 +13448,15 @@ return /******/ (function(modules) { // webpackBootstrap
};
if (me.options.editable.updateTime) {
- if ('start' in item.data) props.start = item.data.start.valueOf();
- if ('end' in item.data) props.end = item.data.end.valueOf();
+ if ('start' in item.data) {
+ props.start = item.data.start.valueOf();
+
+ if ('end' in item.data) {
+ // we store a duration here in order not to change the width
+ // of the item when moving it.
+ props.duration = item.data.end.valueOf() - props.start;
+ }
+ }
}
if (me.options.editable.updateGroup) {
if ('group' in item.data) props.group = item.data.group;
@@ -13363,12 +13476,14 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
ItemSet.prototype._onDrag = function (event) {
- event.preventDefault()
+ event.preventDefault();
if (this.touchParams.itemProps) {
var me = this;
- var snap = this.body.util.snap || null;
+ var snap = this.options.snap || null;
var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width;
+ var scale = this.body.util.getScale();
+ var step = this.body.util.getStep();
// move
this.touchParams.itemProps.forEach(function (props) {
@@ -13379,17 +13494,20 @@ return /******/ (function(modules) { // webpackBootstrap
if ('start' in props) {
var start = new Date(props.start + offset);
- newProps.start = snap ? snap(start) : start;
+ newProps.start = snap ? snap(start, scale, step) : start;
}
if ('end' in props) {
var end = new Date(props.end + offset);
- newProps.end = snap ? snap(end) : end;
+ newProps.end = snap ? snap(end, scale, step) : end;
+ }
+ else if ('duration' in props) {
+ newProps.end = new Date(newProps.start.valueOf() + props.duration);
}
if ('group' in props) {
// drag from one group to another
- var group = ItemSet.groupFromTarget(event);
+ var group = me.groupFromTarget(event);
newProps.group = group && group.groupId;
}
@@ -13549,7 +13667,7 @@ return /******/ (function(modules) { // webpackBootstrap
if (!this.options.editable.add) return;
var me = this,
- snap = this.body.util.snap || null,
+ snap = this.options.snap || null,
item = ItemSet.itemFromTarget(event);
if (item) {
@@ -13568,20 +13686,23 @@ return /******/ (function(modules) { // webpackBootstrap
var xAbs = util.getAbsoluteLeft(this.dom.frame);
var x = event.gesture.center.pageX - xAbs;
var start = this.body.util.toTime(x);
+ var scale = this.body.util.getScale();
+ var step = this.body.util.getStep();
+
var newItem = {
- start: snap ? snap(start) : start,
+ start: snap ? snap(start, scale, step) : start,
content: 'new item'
};
// when default type is a range, add a default end date to the new item
if (this.options.type === 'range') {
var end = this.body.util.toTime(x + this.props.width / 5);
- newItem.end = snap ? snap(end) : end;
+ newItem.end = snap ? snap(end, scale, step) : end;
}
newItem[this.itemsData._fieldId] = util.randomUUID();
- var group = ItemSet.groupFromTarget(event);
+ var group = this.groupFromTarget(event);
if (group) {
newItem.group = group.groupId;
}
@@ -13711,13 +13832,37 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Event} event
* @return {Group | null} group
*/
- ItemSet.groupFromTarget = function(event) {
- var target = event.target;
- while (target) {
- if (target.hasOwnProperty('timeline-group')) {
- return target['timeline-group'];
+ ItemSet.prototype.groupFromTarget = function(event) {
+ // TODO: cleanup when the new solution is stable (also on mobile)
+ //var target = event.target;
+ //while (target) {
+ // if (target.hasOwnProperty('timeline-group')) {
+ // return target['timeline-group'];
+ // }
+ // target = target.parentNode;
+ //}
+ //
+
+ var clientY = event.gesture.center.clientY;
+ for (var i = 0; i < this.groupIds.length; i++) {
+ var groupId = this.groupIds[i];
+ var group = this.groups[groupId];
+ var foreground = group.dom.foreground;
+ var top = util.getAbsoluteTop(foreground);
+ if (clientY > top && clientY < top + foreground.offsetHeight) {
+ return group;
+ }
+
+ if (this.options.orientation === 'top') {
+ if (i === this.groupIds.length - 1 && clientY > top) {
+ return group;
+ }
+ }
+ else {
+ if (i === 0 && clientY < top + foreground.offset) {
+ return group;
+ }
}
- target = target.parentNode;
}
return null;
@@ -14999,7 +15144,8 @@ return /******/ (function(modules) { // webpackBootstrap
// TODO: implement timeaxis orientations 'left' and 'right'
showMinorLabels: true,
showMajorLabels: true,
- format: null
+ format: null,
+ timeAxis: null
};
this.options = util.extend({}, this.defaultOptions);
@@ -15029,7 +15175,8 @@ return /******/ (function(modules) { // webpackBootstrap
'showMinorLabels',
'showMajorLabels',
'hiddenDates',
- 'format'
+ 'format',
+ 'timeAxis'
], this.options, options);
// apply locale to moment.js
@@ -15151,6 +15298,9 @@ return /******/ (function(modules) { // webpackBootstrap
if (this.options.format) {
step.setFormat(this.options.format);
}
+ if (this.options.timeAxis) {
+ step.setScale(this.options.timeAxis);
+ }
this.step = step;
// Move all DOM elements to a "redundant" list, where they
@@ -15389,16 +15539,6 @@ return /******/ (function(modules) { // webpackBootstrap
this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth;
};
- /**
- * Snap a date to a rounded value.
- * The snap intervals are dependent on the current scale and step.
- * @param {Date} date the date to be snapped.
- * @return {Date} snappedDate
- */
- TimeAxis.prototype.snap = function(date) {
- return this.step.snap(date);
- };
-
module.exports = TimeAxis;
@@ -15408,7 +15548,7 @@ return /******/ (function(modules) { // webpackBootstrap
var Emitter = __webpack_require__(56);
var Hammer = __webpack_require__(45);
- var keycharm = __webpack_require__(57);
+ var keycharm = __webpack_require__(59);
var util = __webpack_require__(1);
var hammerUtil = __webpack_require__(47);
var DataSet = __webpack_require__(3);
@@ -15461,9 +15601,19 @@ return /******/ (function(modules) { // webpackBootstrap
this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null};
+ var customScalingFunction = function (min,max,total,value) {
+ if (max == min) {
+ return 0.5;
+ }
+ else {
+ var scale = 1 / (max - min);
+ return Math.max(0,(value - min)*scale);
+ }
+ };
// set constant values
this.defaultOptions = {
nodes: {
+ customScalingFunction: customScalingFunction,
mass: 1,
radiusMin: 10,
radiusMax: 30,
@@ -15477,7 +15627,12 @@ return /******/ (function(modules) { // webpackBootstrap
fontFace: 'verdana',
fontFill: undefined,
fontStrokeWidth: 0, // px
- fontStrokeColor: 'white',
+ fontStrokeColor: '#ffffff',
+ fontDrawThreshold: 3,
+ scaleFontWithValue: false,
+ fontSizeMin: 14,
+ fontSizeMax: 30,
+ fontSizeMaxVisible: 30,
level: -1,
color: {
border: '#2B7CE9',
@@ -15496,6 +15651,7 @@ return /******/ (function(modules) { // webpackBootstrap
borderWidthSelected: undefined
},
edges: {
+ customScalingFunction: customScalingFunction,
widthMin: 1, //
widthMax: 15,//
width: 1,
@@ -15507,6 +15663,7 @@ return /******/ (function(modules) { // webpackBootstrap
highlight:'#848484',
hover: '#848484'
},
+ opacity:1.0,
fontColor: '#343434',
fontSize: 14, // px
fontFace: 'arial',
@@ -15571,15 +15728,17 @@ return /******/ (function(modules) { // webpackBootstrap
height: 1, // (px PNiC) | growth of the height per node in cluster.
radius: 1}, // (px PNiC) | growth of the radius per node in cluster.
maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster.
- activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open.
- clusterLevelDifference: 2
+ activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open.
+ clusterLevelDifference: 2, // used for normalization of the cluster levels
+ clusterByZoom: true // enable clustering through zooming in and out
},
navigation: {
enabled: false
},
keyboard: {
enabled: false,
- speed: {x: 10, y: 10, zoom: 0.02}
+ speed: {x: 10, y: 10, zoom: 0.02},
+ bindToWindow: true
},
dataManipulation: {
enabled: false,
@@ -15599,7 +15758,7 @@ return /******/ (function(modules) { // webpackBootstrap
type: "continuous",
roundness: 0.5
},
- maxVelocity: 30,
+ maxVelocity: 50,
minVelocity: 0.1, // px/s
stabilize: true, // stabilize before displaying the network
stabilizationIterations: 1000, // maximum number of iteration to stabilize
@@ -15681,7 +15840,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.setOptions(options);
// other vars
- this.freezeSimulation = false;// freeze the simulation
+ this.freezeSimulationEnabled = false;// freeze the simulation
this.cachedFunctions = {};
this.startedStabilization = false;
this.stabilized = false;
@@ -15752,7 +15911,7 @@ return /******/ (function(modules) { // webpackBootstrap
else {
// zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here.
if (this.constants.stabilize == false) {
- this.zoomExtent(undefined, true,this.constants.clustering.enabled);
+ this.zoomExtent({duration:0}, true, this.constants.clustering.enabled);
}
}
@@ -15812,17 +15971,45 @@ return /******/ (function(modules) { // webpackBootstrap
* Find the center position of the network
* @private
*/
- Network.prototype._getRange = function() {
+ Network.prototype._getRange = function(specificNodes) {
var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;
- for (var nodeId in this.nodes) {
- if (this.nodes.hasOwnProperty(nodeId)) {
- node = this.nodes[nodeId];
- if (minX > (node.boundingBox.left)) {minX = node.boundingBox.left;}
- if (maxX < (node.boundingBox.right)) {maxX = node.boundingBox.right;}
- if (minY > (node.boundingBox.bottom)) {minY = node.boundingBox.top;} // top is negative, bottom is positive
- if (maxY < (node.boundingBox.top)) {maxY = node.boundingBox.bottom;} // top is negative, bottom is positive
+ if (specificNodes.length > 0) {
+ for (var i = 0; i < specificNodes.length; i++) {
+ node = this.nodes[specificNodes[i]];
+ if (minX > (node.boundingBox.left)) {
+ minX = node.boundingBox.left;
+ }
+ if (maxX < (node.boundingBox.right)) {
+ maxX = node.boundingBox.right;
+ }
+ if (minY > (node.boundingBox.bottom)) {
+ minY = node.boundingBox.top;
+ } // top is negative, bottom is positive
+ if (maxY < (node.boundingBox.top)) {
+ maxY = node.boundingBox.bottom;
+ } // top is negative, bottom is positive
+ }
+ }
+ else {
+ for (var nodeId in this.nodes) {
+ if (this.nodes.hasOwnProperty(nodeId)) {
+ node = this.nodes[nodeId];
+ if (minX > (node.boundingBox.left)) {
+ minX = node.boundingBox.left;
+ }
+ if (maxX < (node.boundingBox.right)) {
+ maxX = node.boundingBox.right;
+ }
+ if (minY > (node.boundingBox.bottom)) {
+ minY = node.boundingBox.top;
+ } // top is negative, bottom is positive
+ if (maxY < (node.boundingBox.top)) {
+ maxY = node.boundingBox.bottom;
+ } // top is negative, bottom is positive
+ }
}
}
+
if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) {
minY = 0, maxY = 0, minX = 0, maxX = 0;
}
@@ -15847,17 +16034,37 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false;
* @param {Boolean} [disableStart] | If true, start is not called.
*/
- Network.prototype.zoomExtent = function(animationOptions, initialZoom, disableStart) {
+ Network.prototype.zoomExtent = function(options, initialZoom, disableStart) {
this._redraw(true);
if (initialZoom === undefined) {initialZoom = false;}
if (disableStart === undefined) {disableStart = false;}
- if (animationOptions === undefined) {animationOptions = false;}
+ if (options === undefined) {options = {nodes:[]};}
+ if (options.nodes === undefined) {
+ options.nodes = [];
+ }
- var range = this._getRange();
+ var range;
var zoomLevel;
if (initialZoom == true) {
+ // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation.
+ var positionDefined = 0;
+ for (var nodeId in this.nodes) {
+ if (this.nodes.hasOwnProperty(nodeId)) {
+ var node = this.nodes[nodeId];
+ if (node.predefinedPosition == true) {
+ positionDefined += 1;
+ }
+ }
+ }
+ if (positionDefined > 0.5 * this.nodeIndices.length) {
+ this.zoomExtent(options,false,disableStart);
+ return;
+ }
+
+ range = this._getRange(options.nodes);
+
var numberOfNodes = this.nodeIndices.length;
if (this.constants.smoothCurves == true) {
if (this.constants.clustering.enabled == true &&
@@ -15883,6 +16090,7 @@ return /******/ (function(modules) { // webpackBootstrap
zoomLevel *= factor;
}
else {
+ range = this._getRange(options.nodes);
var xDistance = Math.abs(range.maxX - range.minX) * 1.1;
var yDistance = Math.abs(range.maxY - range.minY) * 1.1;
@@ -15898,7 +16106,7 @@ return /******/ (function(modules) { // webpackBootstrap
var center = this._findCenter(range);
if (disableStart == false) {
- var options = {position: center, scale: zoomLevel, animation: animationOptions};
+ var options = {position: center, scale: zoomLevel, animation: options};
this.moveTo(options);
this.moving = true;
this.start();
@@ -15943,6 +16151,10 @@ return /******/ (function(modules) { // webpackBootstrap
if (disableStart === undefined) {
disableStart = false;
}
+
+ // unselect all to ensure no selections from old data are carried over.
+ this._unselectAll(true);
+
// we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added.
this.initializing = true;
@@ -15987,7 +16199,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
else {
// find a stable position or start animating to a stable position
- if (this.constants.stabilize) {
+ if (this.constants.stabilize == true) {
this._stabilize();
}
}
@@ -16138,7 +16350,7 @@ return /******/ (function(modules) { // webpackBootstrap
// bind keys. If disabled, this will not do anything;
this._createKeyBinds();
-
+ this._markAllEdgesAsDirty();
this.setSize(this.constants.width, this.constants.height);
this.moving = true;
this.start();
@@ -16164,6 +16376,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.frame.className = 'vis network-frame';
this.frame.style.position = 'relative';
this.frame.style.overflow = 'hidden';
+ this.frame.tabIndex = 900;
//////////////////////////////////////////////////////////////////
@@ -16188,6 +16401,7 @@ return /******/ (function(modules) { // webpackBootstrap
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1);
+ //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens.
this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);
}
@@ -16243,7 +16457,13 @@ return /******/ (function(modules) { // webpackBootstrap
if (this.keycharm !== undefined) {
this.keycharm.destroy();
}
- this.keycharm = keycharm();
+
+ if (this.constants.keyboard.bindToWindow == true) {
+ this.keycharm = keycharm({container: window, preventDefault: false});
+ }
+ else {
+ this.keycharm = keycharm({container: this.frame, preventDefault: false});
+ }
this.keycharm.reset();
@@ -16273,6 +16493,10 @@ return /******/ (function(modules) { // webpackBootstrap
this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown");
this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup");
}
+ //this.keycharm.bind("1",this.increaseClusterLevel.bind(me), "keydown");
+ //this.keycharm.bind("2",this.decreaseClusterLevel.bind(me), "keydown");
+ //this.keycharm.bind("3",this.forceAggregateHubs.bind(me,true),"keydown");
+ //this.keycharm.bind("4",this.normalizeClusterLevels.bind(me), "keydown");
if (this.constants.dataManipulation.enabled == true) {
this.keycharm.bind("esc",this._createManipulatorBar.bind(me));
@@ -16688,6 +16912,11 @@ return /******/ (function(modules) { // webpackBootstrap
this._checkHidePopup(pointer);
}
+ // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over
+ if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) {
+ this.frame.focus();
+ }
+
// start a timeout that will check if the mouse is positioned above
// an element
var me = this;
@@ -16990,8 +17219,16 @@ return /******/ (function(modules) { // webpackBootstrap
}
this._updateNodeIndexList();
this._updateValueRange(nodes);
+ this._markAllEdgesAsDirty();
};
+
+ Network.prototype._markAllEdgesAsDirty = function() {
+ for (var edgeId in this.edges) {
+ this.edges[edgeId].colorDirty = true;
+ }
+ }
+
/**
* Remove existing nodes. If nodes do not exist, the method will just ignore it.
* @param {Number[] | String[]} ids
@@ -16999,10 +17236,22 @@ return /******/ (function(modules) { // webpackBootstrap
*/
Network.prototype._removeNodes = function(ids) {
var nodes = this.nodes;
+
+ // remove from selection
+ for (var i = 0, len = ids.length; i < len; i++) {
+ if (this.selectionObj.nodes[ids[i]] !== undefined) {
+ this.nodes[ids[i]].unselect();
+ this._removeFromSelection(this.nodes[ids[i]]);
+ }
+ }
+
for (var i = 0, len = ids.length; i < len; i++) {
var id = ids[i];
delete nodes[id];
}
+
+
+
this._updateNodeIndexList();
if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) {
this._resetLevels();
@@ -17134,6 +17383,15 @@ return /******/ (function(modules) { // webpackBootstrap
*/
Network.prototype._removeEdges = function (ids) {
var edges = this.edges;
+
+ // remove from selection
+ for (var i = 0, len = ids.length; i < len; i++) {
+ if (this.selectionObj.edges[ids[i]] !== undefined) {
+ edges[ids[i]].unselect();
+ this._removeFromSelection(edges[ids[i]]);
+ }
+ }
+
for (var i = 0, len = ids.length; i < len; i++) {
var id = ids[i];
var edge = edges[id];
@@ -17194,12 +17452,14 @@ return /******/ (function(modules) { // webpackBootstrap
// determine the range of the objects
var valueMin = undefined;
var valueMax = undefined;
+ var valueTotal = 0;
for (id in obj) {
if (obj.hasOwnProperty(id)) {
var value = obj[id].getValue();
if (value !== undefined) {
valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin);
valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax);
+ valueTotal += value;
}
}
}
@@ -17208,7 +17468,7 @@ return /******/ (function(modules) { // webpackBootstrap
if (valueMin !== undefined && valueMax !== undefined) {
for (id in obj) {
if (obj.hasOwnProperty(id)) {
- obj[id].setValueRange(valueMin, valueMax);
+ obj[id].setValueRange(valueMin, valueMax, valueTotal);
}
}
}
@@ -17234,8 +17494,8 @@ return /******/ (function(modules) { // webpackBootstrap
ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);
// clear the canvas
- var w = this.frame.canvas.width * this.pixelRatio;
- var h = this.frame.canvas.height * this.pixelRatio;
+ var w = this.frame.canvas.clientWidth;
+ var h = this.frame.canvas.clientHeight;
ctx.clearRect(0, 0, w, h);
// set scaling and translation
@@ -17248,8 +17508,8 @@ return /******/ (function(modules) { // webpackBootstrap
"y": this._YconvertDOMtoCanvas(0)
};
this.canvasBottomRight = {
- "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth * this.pixelRatio),
- "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight * this.pixelRatio)
+ "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),
+ "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)
};
if (!(hidden == true)) {
@@ -17484,16 +17744,23 @@ return /******/ (function(modules) { // webpackBootstrap
var count = 0;
while (this.moving && count < this.constants.stabilizationIterations) {
this._physicsTick();
+ // TODO: cleanup
+ //if (count % 100 == 0) {
+ // console.log("stabilizationIterations",count);
+ //}
count++;
}
+
if (this.constants.zoomExtentOnStabilize == true) {
- this.zoomExtent(undefined, false, true);
+ this.zoomExtent({duration:0}, false, true);
}
if (this.constants.freezeForStabilization == true) {
this._restoreFrozenNodes();
}
+
+ this.emit("stabilizationIterationsDone");
};
/**
@@ -17543,8 +17810,10 @@ return /******/ (function(modules) { // webpackBootstrap
Network.prototype._isMoving = function(vmin) {
var nodes = this.nodes;
for (var id in nodes) {
- if (nodes.hasOwnProperty(id) && nodes[id].isMoving(vmin)) {
- return true;
+ if (nodes[id] !== undefined) {
+ if (nodes[id].isMoving(vmin) == true) {
+ return true;
+ }
}
}
return false;
@@ -17615,7 +17884,7 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
Network.prototype._physicsTick = function() {
- if (!this.freezeSimulation) {
+ if (!this.freezeSimulationEnabled) {
if (this.moving == true) {
var mainMovingStatus = false;
var supportMovingStatus = false;
@@ -17627,11 +17896,12 @@ return /******/ (function(modules) { // webpackBootstrap
}
// gather movement data from all sectors, if one moves, we are NOT stabilzied
- for (var i = 0; i < mainMoving.length; i++) {mainMovingStatus = mainMoving[0] || mainMovingStatus;}
+ for (var i = 0; i < mainMoving.length; i++) {
+ mainMovingStatus = mainMoving[i] || mainMovingStatus;
+ }
// determine if the network has stabilzied
this.moving = mainMovingStatus || supportMovingStatus;
-
if (this.moving == false) {
this._revertPhysicsTick();
}
@@ -17754,12 +18024,14 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Freeze the _animationStep
*/
- Network.prototype.toggleFreeze = function() {
- if (this.freezeSimulation == false) {
- this.freezeSimulation = true;
+ Network.prototype.freezeSimulation = function(freeze) {
+ if (freeze == true) {
+ this.freezeSimulationEnabled = true;
+ this.moving = false;
}
else {
- this.freezeSimulation = false;
+ this.freezeSimulationEnabled = false;
+ this.moving = true;
this.start();
}
};
@@ -18132,6 +18404,30 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
+ Network.prototype.getConnectedNodes = function(nodeId) {
+ var nodeList = [];
+ if (this.nodes[nodeId] !== undefined) {
+ var node = this.nodes[nodeId];
+ var nodeObj = {nodeId : true}; // used to quickly check if node already exists
+ for (var i = 0; i < node.edges.length; i++) {
+ var edge = node.edges[i];
+ if (edge.toId == nodeId) {
+ if (nodeObj[edge.fromId] === undefined) {
+ nodeList.push(edge.fromId);
+ nodeObj[edge.fromId] = true;
+ }
+ }
+ else if (edge.fromId == nodeId) {
+ if (nodeObj[edge.toId] === undefined) {
+ nodeList.push(edge.toId)
+ nodeObj[edge.toId] = true;
+ }
+ }
+ }
+ }
+ return nodeList;
+ }
+
module.exports = Network;
@@ -18181,6 +18477,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.hover = false;
this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached
this.dirtyLabel = true;
+ this.colorDirty = true;
this.from = null; // a node
this.to = null; // a node
@@ -18212,12 +18509,14 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Object} constants and object with default, global properties
*/
Edge.prototype.setProperties = function(properties) {
+ this.colorDirty = true;
if (!properties) {
return;
}
var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width',
- 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment'
+ 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity',
+ 'customScalingFunction'
];
util.selectiveDeepExtend(fields, this.options, properties);
@@ -18244,7 +18543,9 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
- // A node is connected when it has a from and to node.
+
+
+ // A node is connected when it has a from and to node.
this.connect();
this.widthFixed = this.widthFixed || (properties.width !== undefined);
@@ -18260,9 +18561,9 @@ return /******/ (function(modules) { // webpackBootstrap
case 'dash-line': this.draw = this._drawDashLine; break;
default: this.draw = this._drawLine; break;
}
-
};
+
/**
* Connect an edge to its nodes
*/
@@ -18327,10 +18628,11 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Number} min
* @param {Number} max
*/
- Edge.prototype.setValueRange = function(min, max) {
+ Edge.prototype.setValueRange = function(min, max, total) {
if (!this.widthFixed && this.value !== undefined) {
- var scale = (this.options.widthMax - this.options.widthMin) / (max - min);
- this.options.width= (this.value - min) * scale + this.options.widthMin;
+ var scale = this.options.customScalingFunction(min, max, total, this.value);
+ var widthDiff = this.options.widthMax - this.options.widthMin;
+ this.options.width = this.options.widthMin + scale * widthDiff;
this.widthSelected = this.options.width* this.options.widthSelectionMultiplier;
}
};
@@ -18371,19 +18673,23 @@ return /******/ (function(modules) { // webpackBootstrap
Edge.prototype._getColor = function() {
var colorObj = this.options.color;
- if (this.options.inheritColor == "to") {
- colorObj = {
- highlight: this.to.options.color.highlight.border,
- hover: this.to.options.color.hover.border,
- color: this.to.options.color.border
- };
- }
- else if (this.options.inheritColor == "from" || this.options.inheritColor == true) {
- colorObj = {
- highlight: this.from.options.color.highlight.border,
- hover: this.from.options.color.hover.border,
- color: this.from.options.color.border
- };
+ if (this.colorDirty === true) {
+ if (this.options.inheritColor == "to") {
+ colorObj = {
+ highlight: this.to.options.color.highlight.border,
+ hover: this.to.options.color.hover.border,
+ color: util.overrideOpacity(this.from.options.color.border, this.options.opacity)
+ };
+ }
+ else if (this.options.inheritColor == "from" || this.options.inheritColor == true) {
+ colorObj = {
+ highlight: this.from.options.color.highlight.border,
+ hover: this.from.options.color.hover.border,
+ color: util.overrideOpacity(this.from.options.color.border, this.options.opacity)
+ };
+ }
+ this.options.color = colorObj;
+ this.colorDirty = false;
}
if (this.selected == true) {return colorObj.highlight;}
@@ -19635,16 +19941,25 @@ return /******/ (function(modules) { // webpackBootstrap
me.callback(this);
}
}
- else if (me.imageBroken[url] === true) {
- console.error("Could not load brokenImage:", brokenUrl);
- delete this.src;
- if (me.callback) {
- me.callback(this);
- }
- }
else {
- this.src = brokenUrl;
- me.imageBroken[url] = true;
+ if (me.imageBroken[url] === true) {
+ if (this.src == brokenUrl) {
+ console.error("Could not load brokenImage:", brokenUrl);
+ delete this.src;
+ if (me.callback) {
+ me.callback(this);
+ }
+ }
+ else {
+ console.error("Could not load image:", url);
+ this.src = brokenUrl;
+ }
+ }
+ else {
+ console.error("Could not load image:", url);
+ this.src = brokenUrl;
+ me.imageBroken[url] = true;
+ }
}
};
@@ -19699,8 +20014,6 @@ return /******/ (function(modules) { // webpackBootstrap
this.dynamicEdges = [];
this.reroutedEdges = {};
- this.fontDrawThreshold = 3;
-
// set defaults for the properties
this.id = undefined;
this.allowedToMoveX = false;
@@ -19727,6 +20040,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.vy = 0.0; // velocity y
this.x = null;
this.y = null;
+ this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate
// used for reverting to previous position on stabilization
this.previousState = {vx:0,vy:0,x:0,y:0};
@@ -19738,7 +20052,6 @@ return /******/ (function(modules) { // webpackBootstrap
// creating the variables for clustering
this.resetCluster();
- this.dynamicEdgesLength = 0;
this.clusterSession = 0;
this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width;
this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height;
@@ -19789,7 +20102,6 @@ return /******/ (function(modules) { // webpackBootstrap
if (this.dynamicEdges.indexOf(edge) == -1) {
this.dynamicEdges.push(edge);
}
- this.dynamicEdgesLength = this.dynamicEdges.length;
};
/**
@@ -19805,7 +20117,6 @@ return /******/ (function(modules) { // webpackBootstrap
if (index != -1) {
this.dynamicEdges.splice(index, 1);
}
- this.dynamicEdgesLength = this.dynamicEdges.length;
};
@@ -19820,7 +20131,8 @@ return /******/ (function(modules) { // webpackBootstrap
}
var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor',
- 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass'
+ 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold',
+ 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction'
];
util.selectiveDeepExtend(fields, this.options, properties);
@@ -19828,8 +20140,8 @@ return /******/ (function(modules) { // webpackBootstrap
if (properties.id !== undefined) {this.id = properties.id;}
if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;}
if (properties.title !== undefined) {this.title = properties.title;}
- if (properties.x !== undefined) {this.x = properties.x;}
- if (properties.y !== undefined) {this.y = properties.y;}
+ if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;}
+ if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;}
if (properties.value !== undefined) {this.value = properties.value;}
if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;}
@@ -20145,16 +20457,17 @@ return /******/ (function(modules) { // webpackBootstrap
* @param {Number} min
* @param {Number} max
*/
- Node.prototype.setValueRange = function(min, max) {
+ Node.prototype.setValueRange = function(min, max, total) {
if (!this.radiusFixed && this.value !== undefined) {
- if (max == min) {
- this.options.radius= (this.options.radiusMin + this.options.radiusMax) / 2;
- }
- else {
- var scale = (this.options.radiusMax - this.options.radiusMin) / (max - min);
- this.options.radius= (this.value - min) * scale + this.options.radiusMin;
+ var scale = this.options.customScalingFunction(min, max, total, this.value);
+ var radiusDiff = this.options.radiusMax - this.options.radiusMin;
+ if (this.options.scaleFontWithValue == true) {
+ var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin;
+ this.options.fontSize = this.options.fontSizeMin + scale * fontDiff;
}
+ this.options.radius = this.options.radiusMin + scale * radiusDiff;
}
+
this.baseRadiusValue = this.options.radius;
};
@@ -20678,12 +20991,29 @@ 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;
+ var relativeFontSize = Number(this.options.fontSize) * this.networkScale;
+ if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) {
+ var fontSize = Number(this.options.fontSize);
+
+ // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel)
+ if (relativeFontSize >= this.options.fontSizeMaxVisible) {
+ fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv;
+ }
+
+ // fade in when relative scale is between threshold and threshold - 1
+ var fontColor = this.options.fontColor || "#000000";
+ var strokecolor = this.options.fontStrokeColor;
+ if (relativeFontSize <= this.options.fontDrawThreshold) {
+ var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize)));
+ fontColor = util.overrideOpacity(fontColor, opacity);
+ strokecolor = util.overrideOpacity(strokecolor, opacity);
+
+ }
+
+ ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace;
var lines = text.split('\n');
var lineCount = lines.length;
- var fontSize = Number(this.options.fontSize);
var yLine = y + (1 - lineCount) / 2 * fontSize;
if (labelUnderNode == true) {
yLine = y + (1 - lineCount) / (2 * fontSize);
@@ -20695,7 +21025,7 @@ return /******/ (function(modules) { // webpackBootstrap
var lineWidth = ctx.measureText(lines[i]).width;
width = lineWidth > width ? lineWidth : width;
}
- var height = this.options.fontSize * lineCount;
+ var height = fontSize * lineCount;
var left = x - width / 2;
var top = y - height / 2;
if (baseline == "hanging") {
@@ -20712,12 +21042,12 @@ return /******/ (function(modules) { // webpackBootstrap
}
// draw text
- ctx.fillStyle = this.options.fontColor || "black";
+ ctx.fillStyle = fontColor;
ctx.textAlign = align || "center";
ctx.textBaseline = baseline || "middle";
if (this.options.fontStrokeWidth > 0){
ctx.lineWidth = this.options.fontStrokeWidth;
- ctx.strokeStyle = this.options.fontStrokeColor;
+ ctx.strokeStyle = strokecolor;
ctx.lineJoin = 'round';
}
for (var i = 0; i < lineCount; i++) {
@@ -20733,10 +21063,14 @@ return /******/ (function(modules) { // webpackBootstrap
Node.prototype.getTextSize = function(ctx) {
if (this.label !== undefined) {
- ctx.font = (this.selected ? "bold " : "") + this.options.fontSize + "px " + this.options.fontFace;
+ var fontSize = Number(this.options.fontSize);
+ if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) {
+ fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv;
+ }
+ ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace;
var lines = this.label.split('\n'),
- height = (Number(this.options.fontSize) + 4) * lines.length,
+ height = (fontSize + 4) * lines.length,
width = 0;
for (var i = 0, iMax = lines.length; i < iMax; i++) {
@@ -20888,21 +21222,13 @@ return /******/ (function(modules) { // webpackBootstrap
}
// create the frame
- this.frame = document.createElement("div");
- var styleAttr = this.frame.style;
- styleAttr.position = "absolute";
- styleAttr.visibility = "hidden";
- styleAttr.border = "1px solid " + style.color.border;
- styleAttr.color = style.fontColor;
- styleAttr.fontSize = style.fontSize + "px";
- styleAttr.fontFamily = style.fontFace;
- styleAttr.padding = this.padding + "px";
- styleAttr.backgroundColor = style.color.background;
- styleAttr.borderRadius = "3px";
- styleAttr.MozBorderRadius = "3px";
- styleAttr.WebkitBorderRadius = "3px";
- styleAttr.boxShadow = "3px 3px 10px rgba(128, 128, 128, 0.5)";
- styleAttr.whiteSpace = "nowrap";
+ this.frame = document.createElement('div');
+ this.frame.className = 'network-tooltip';
+ this.frame.style.color = style.fontColor;
+ this.frame.style.backgroundColor = style.color.background;
+ this.frame.style.borderColor = style.color.border;
+ this.frame.style.fontSize = style.fontSize + 'px';
+ this.frame.style.fontFamily = style.fontFace;
this.container.appendChild(this.frame);
}
@@ -21892,7 +22218,7 @@ return /******/ (function(modules) { // webpackBootstrap
// Only load hammer.js when in a browser environment
// (loading hammer.js in a node.js environment gives errors)
if (typeof window !== 'undefined') {
- module.exports = window['Hammer'] || __webpack_require__(59);
+ module.exports = window['Hammer'] || __webpack_require__(57);
}
else {
module.exports = function () {
@@ -21995,7 +22321,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.dom.rightContainer.appendChild(this.dom.shadowTopRight);
this.dom.rightContainer.appendChild(this.dom.shadowBottomRight);
- this.on('rangechange', this.redraw.bind(this));
+ this.on('rangechange', this._redraw.bind(this));
this.on('touch', this._onTouch.bind(this));
this.on('pinch', this._onPinch.bind(this));
this.on('dragstart', this._onDragStart.bind(this));
@@ -22008,13 +22334,13 @@ return /******/ (function(modules) { // webpackBootstrap
if (!me._redrawTimer) {
me._redrawTimer = setTimeout(function () {
me._redrawTimer = null;
- me.redraw();
+ me._redraw();
}, 0)
}
}
else {
// redraw immediately
- me.redraw();
+ me._redraw();
}
});
@@ -22131,7 +22457,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
// redraw everything
- this.redraw();
+ this._redraw();
};
/**
@@ -22305,6 +22631,7 @@ return /******/ (function(modules) { // webpackBootstrap
* start or only end. Syntax:
*
* TimeLine.setWindow(start, end)
+ * TimeLine.setWindow(start, end, options)
* TimeLine.setWindow(range)
*
* Where start and end can be a Date, number, or string, and range is an
@@ -22320,12 +22647,14 @@ return /******/ (function(modules) { // webpackBootstrap
* for the animation. Default duration is 500 ms.
*/
Core.prototype.setWindow = function(start, end, options) {
- var animate = (options && options.animate !== undefined) ? options.animate : true;
+ var animate;
if (arguments.length == 1) {
var range = arguments[0];
+ animate = (range.animate !== undefined) ? range.animate : true;
this.range.setRange(range.start, range.end, animate);
}
else {
+ animate = (options && options.animate !== undefined) ? options.animate : true;
this.range.setRange(start, end, animate);
}
};
@@ -22364,10 +22693,18 @@ return /******/ (function(modules) { // webpackBootstrap
};
/**
- * Force a redraw of the Core. Can be useful to manually redraw when
- * option autoResize=false
+ * Force a redraw. Can be overridden by implementations of Core
*/
Core.prototype.redraw = function() {
+ this._redraw();
+ };
+
+ /**
+ * Redraw for internal use. Redraws all components. See also the public
+ * method redraw.
+ * @protected
+ */
+ Core.prototype._redraw = function() {
var resized = false;
var options = this.options;
var props = this.props;
@@ -22518,7 +22855,7 @@ return /******/ (function(modules) { // webpackBootstrap
var MAX_REDRAWS = 3; // maximum number of consecutive redraws
if (this.redrawCount < MAX_REDRAWS) {
this.redrawCount++;
- this.redraw();
+ this._redraw();
}
else {
console.log('WARNING: infinite loop in redraw?');
@@ -22726,7 +23063,7 @@ return /******/ (function(modules) { // webpackBootstrap
if (newScrollTop != oldScrollTop) {
- this.redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already
+ this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already
this.emit("verticalDrag");
}
};
@@ -23548,7 +23885,7 @@ return /******/ (function(modules) { // webpackBootstrap
/* 53 */
/***/ function(module, exports, __webpack_require__) {
- var keycharm = __webpack_require__(57);
+ var keycharm = __webpack_require__(59);
var Emitter = __webpack_require__(56);
var Hammer = __webpack_require__(45);
var util = __webpack_require__(1);
@@ -24147,5426 +24484,5426 @@ return /******/ (function(modules) { // webpackBootstrap
/* 57 */
/***/ function(module, exports, __webpack_require__) {
- var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";
+ var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20
+ * http://eightmedia.github.io/hammer.js
+ *
+ * Copyright (c) 2014 Jorik Tangelder ;
+ * Licensed under the MIT license */
+
+ (function(window, undefined) {
+ 'use strict';
+
/**
- * Created by Alex on 11/6/2014.
+ * @main
+ * @module hammer
+ *
+ * @class Hammer
+ * @static
*/
- // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60
- // if the module has no dependencies, the above pattern can be simplified to
- (function (root, factory) {
- if (true) {
- // AMD. Register as an anonymous module.
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else if (typeof exports === 'object') {
- // Node. Does not work with strict CommonJS, but
- // only CommonJS-like environments that support module.exports,
- // like Node.
- module.exports = factory();
- } else {
- // Browser globals (root is window)
- root.keycharm = factory();
- }
- }(this, function () {
+ /**
+ * 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 || {});
+ };
- function keycharm(options) {
- var preventDefault = options && options.preventDefault || false;
+ /**
+ * version, as defined in package.json
+ * the value will be set at each build
+ * @property VERSION
+ * @final
+ * @type {String}
+ */
+ Hammer.VERSION = '1.1.3';
- var container = options && options.container || window;
+ /**
+ * 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',
- var _exportFunctions = {};
- var _bound = {keydown:{}, keyup:{}};
- var _keys = {};
- var i;
+ /**
+ * 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',
- // a - z
- for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};}
- // A - Z
- for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};}
- // 0 - 9
- for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};}
- // F1 - F12
- for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};}
- // num0 - num9
- for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};}
+ /**
+ * 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',
- // numpad misc
- _keys['num*'] = {code:106, shift: false};
- _keys['num+'] = {code:107, shift: false};
- _keys['num-'] = {code:109, shift: false};
- _keys['num/'] = {code:111, shift: false};
- _keys['num.'] = {code:110, shift: false};
- // arrows
- _keys['left'] = {code:37, shift: false};
- _keys['up'] = {code:38, shift: false};
- _keys['right'] = {code:39, shift: false};
- _keys['down'] = {code:40, shift: false};
- // extra keys
- _keys['space'] = {code:32, shift: false};
- _keys['enter'] = {code:13, shift: false};
- _keys['shift'] = {code:16, shift: undefined};
- _keys['esc'] = {code:27, shift: false};
- _keys['backspace'] = {code:8, shift: false};
- _keys['tab'] = {code:9, shift: false};
- _keys['ctrl'] = {code:17, shift: false};
- _keys['alt'] = {code:18, shift: false};
- _keys['delete'] = {code:46, shift: false};
- _keys['pageup'] = {code:33, shift: false};
- _keys['pagedown'] = {code:34, shift: false};
- // symbols
- _keys['='] = {code:187, shift: false};
- _keys['-'] = {code:189, shift: false};
- _keys[']'] = {code:221, shift: false};
- _keys['['] = {code:219, shift: false};
+ /**
+ * Specifies whether zooming is enabled. Used by IE10>
+ * @property defaults.behavior.contentZooming
+ * @type {String}
+ * @default 'none'
+ */
+ contentZooming: 'none',
+ /**
+ * Specifies that an entire element should be draggable instead of its contents.
+ * Mainly for desktop browsers.
+ * @property defaults.behavior.userDrag
+ * @type {String}
+ * @default 'none'
+ */
+ userDrag: 'none',
+ /**
+ * Overrides the highlight color shown when the user taps a link or a JavaScript
+ * clickable element in Safari on iPhone. This property obeys the alpha value, if specified.
+ *
+ * If you don't specify an alpha value, Safari on iPhone applies a default alpha value
+ * to the color. To disable tap highlighting, set the alpha value to 0 (invisible).
+ * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped.
+ * @property defaults.behavior.tapHighlightColor
+ * @type {String}
+ * @default 'rgba(0,0,0,0)'
+ */
+ tapHighlightColor: 'rgba(0,0,0,0)'
+ }
+ };
- var down = function(event) {handleEvent(event,'keydown');};
- var up = function(event) {handleEvent(event,'keyup');};
+ /**
+ * hammer document where the base events are added at
+ * @property DOCUMENT
+ * @type {HTMLElement}
+ * @default window.document
+ */
+ Hammer.DOCUMENT = document;
- // handle the actualy bound key with the event
- var handleEvent = function(event,type) {
- if (_bound[type][event.keyCode] !== undefined) {
- var bound = _bound[type][event.keyCode];
- for (var i = 0; i < bound.length; i++) {
- if (bound[i].shift === undefined) {
- bound[i].fn(event);
- }
- else if (bound[i].shift == true && event.shiftKey == true) {
- bound[i].fn(event);
- }
- else if (bound[i].shift == false && event.shiftKey == false) {
- bound[i].fn(event);
- }
- }
+ /**
+ * detect support for pointer events
+ * @property HAS_POINTEREVENTS
+ * @type {Boolean}
+ */
+ Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled;
- if (preventDefault == true) {
- event.preventDefault();
- }
- }
- };
+ /**
+ * detect support for touch events
+ * @property HAS_TOUCHEVENTS
+ * @type {Boolean}
+ */
+ Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window);
- // bind a key to a callback
- _exportFunctions.bind = function(key, callback, type) {
- if (type === undefined) {
- type = 'keydown';
- }
- if (_keys[key] === undefined) {
- throw new Error("unsupported key: " + key);
- }
- if (_bound[type][_keys[key].code] === undefined) {
- _bound[type][_keys[key].code] = [];
- }
- _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift});
- };
+ /**
+ * detect mobile browsers
+ * @property IS_MOBILE
+ * @type {Boolean}
+ */
+ Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent);
+ /**
+ * detect if we want to support mouseevents at all
+ * @property NO_MOUSEEVENTS
+ * @type {Boolean}
+ */
+ Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS;
- // bind all keys to a call back (demo purposes)
- _exportFunctions.bindAll = function(callback, type) {
- if (type === undefined) {
- type = 'keydown';
- }
- for (var key in _keys) {
- if (_keys.hasOwnProperty(key)) {
- _exportFunctions.bind(key,callback,type);
- }
- }
- };
+ /**
+ * interval in which Hammer recalculates current velocity/direction/angle in ms
+ * @property CALCULATE_INTERVAL
+ * @type {Number}
+ * @default 25
+ */
+ Hammer.CALCULATE_INTERVAL = 25;
- // get the key label from an event
- _exportFunctions.getKey = function(event) {
- for (var key in _keys) {
- if (_keys.hasOwnProperty(key)) {
- if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) {
- return key;
- }
- else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) {
- return key;
- }
- else if (event.keyCode == _keys[key].code && key == 'shift') {
- return key;
- }
- }
- }
- return "unknown key, currently not supported";
- };
+ /**
+ * 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 = {};
- // unbind either a specific callback from a key or all of them (by leaving callback undefined)
- _exportFunctions.unbind = function(key, callback, type) {
- if (type === undefined) {
- type = 'keydown';
- }
- if (_keys[key] === undefined) {
- throw new Error("unsupported key: " + key);
- }
- if (callback !== undefined) {
- var newBindings = [];
- var bound = _bound[type][_keys[key].code];
- if (bound !== undefined) {
- for (var i = 0; i < bound.length; i++) {
- if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) {
- newBindings.push(_bound[type][_keys[key].code][i]);
- }
- }
- }
- _bound[type][_keys[key].code] = newBindings;
- }
- else {
- _bound[type][_keys[key].code] = [];
- }
- };
+ /**
+ * 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';
- // reset all bound variables.
- _exportFunctions.reset = function() {
- _bound = {keydown:{}, keyup:{}};
- };
-
- // unbind all listeners and reset all variables.
- _exportFunctions.destroy = function() {
- _bound = {keydown:{}, keyup:{}};
- container.removeEventListener('keydown', down, true);
- container.removeEventListener('keyup', up, true);
- };
-
- // create listeners.
- container.addEventListener('keydown',down,true);
- container.addEventListener('keyup',up,true);
-
- // return the public functions.
- return _exportFunctions;
- }
-
- return keycharm;
- }));
-
-
-
-
-/***/ },
-/* 58 */
-/***/ function(module, exports, __webpack_require__) {
-
- var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js
- //! version : 2.9.0
- //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
- //! license : MIT
- //! momentjs.com
-
- (function (undefined) {
- /************************************
- Constants
- ************************************/
-
- var moment,
- VERSION = '2.9.0',
- // the global-scope this is NOT the global object in Node.js
- globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this,
- oldGlobalMoment,
- round = Math.round,
- hasOwnProperty = Object.prototype.hasOwnProperty,
- i,
-
- YEAR = 0,
- MONTH = 1,
- DATE = 2,
- HOUR = 3,
- MINUTE = 4,
- SECOND = 5,
- MILLISECOND = 6,
-
- // internal storage for locale config files
- locales = {},
-
- // extra moment internal properties (plugins register props here)
- momentProperties = [],
-
- // check for nodeJS
- hasModule = (typeof module !== 'undefined' && module && module.exports),
-
- // ASP.NET json date format regex
- aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
- aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
-
- // 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)$/,
-
- // format tokens
- formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,
- localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
-
- // parsing token regexes
- parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
- parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
- parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
- parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
- parseTokenDigits = /\d+/, // nonzero number of digits
- parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
- parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
- parseTokenT = /T/i, // T (ISO separator)
- parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123
- parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-
- //strict parsing regexes
- parseTokenOneDigit = /\d/, // 0 - 9
- parseTokenTwoDigits = /\d\d/, // 00 - 99
- parseTokenThreeDigits = /\d{3}/, // 000 - 999
- parseTokenFourDigits = /\d{4}/, // 0000 - 9999
- parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
- parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
-
- // iso 8601 regex
- // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
- isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-
- isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
-
- 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}/]
- ],
-
- // 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/]
- ],
-
- // 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
- },
-
- 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'
- },
-
- camelFunctions = {
- dayofyear : 'dayOfYear',
- isoweekday : 'isoWeekday',
- isoweek : 'isoWeek',
- weekyear : 'weekYear',
- isoweekyear : 'isoWeekYear'
- },
-
- // format function strings
- formatFunctions = {},
-
- // default relative time thresholds
- relativeTimeThresholds = {
- s: 45, // seconds to minute
- m: 45, // minutes to hour
- h: 22, // hours to day
- d: 26, // days to month
- M: 11 // months to year
- },
-
- // tokens to ordinalize and pad
- ordinalizeTokens = 'DDD w W M D d'.split(' '),
- paddedTokens = 'M D H h m s w W'.split(' '),
-
- formatTokenFunctions = {
- M : function () {
- return this.month() + 1;
- },
- MMM : function (format) {
- return this.localeData().monthsShort(this, format);
- },
- MMMM : function (format) {
- return this.localeData().months(this, format);
- },
- D : function () {
- return this.date();
- },
- DDD : function () {
- return this.dayOfYear();
- },
- d : function () {
- return this.day();
- },
- dd : function (format) {
- return this.localeData().weekdaysMin(this, format);
- },
- ddd : function (format) {
- return this.localeData().weekdaysShort(this, format);
- },
- dddd : function (format) {
- return this.localeData().weekdays(this, format);
- },
- w : function () {
- return this.week();
- },
- W : function () {
- return this.isoWeek();
- },
- YY : function () {
- return leftZeroFill(this.year() % 100, 2);
- },
- YYYY : function () {
- return leftZeroFill(this.year(), 4);
- },
- YYYYY : function () {
- return leftZeroFill(this.year(), 5);
- },
- YYYYYY : function () {
- var y = this.year(), sign = y >= 0 ? '+' : '-';
- return sign + leftZeroFill(Math.abs(y), 6);
- },
- gg : function () {
- return leftZeroFill(this.weekYear() % 100, 2);
- },
- gggg : function () {
- return leftZeroFill(this.weekYear(), 4);
- },
- ggggg : function () {
- return leftZeroFill(this.weekYear(), 5);
- },
- GG : function () {
- return leftZeroFill(this.isoWeekYear() % 100, 2);
- },
- GGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 4);
- },
- GGGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 5);
- },
- e : function () {
- return this.weekday();
- },
- E : function () {
- return this.isoWeekday();
- },
- a : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), true);
- },
- A : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), false);
- },
- H : function () {
- return this.hours();
- },
- h : function () {
- return this.hours() % 12 || 12;
- },
- m : function () {
- return this.minutes();
- },
- s : function () {
- return this.seconds();
- },
- S : function () {
- return toInt(this.milliseconds() / 100);
- },
- SS : function () {
- return leftZeroFill(toInt(this.milliseconds() / 10), 2);
- },
- SSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- SSSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- Z : function () {
- var a = this.utcOffset(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
- },
- ZZ : function () {
- var a = this.utcOffset(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
- },
- z : function () {
- return this.zoneAbbr();
- },
- zz : function () {
- return this.zoneName();
- },
- x : function () {
- return this.valueOf();
- },
- X : function () {
- return this.unix();
- },
- Q : function () {
- return this.quarter();
- }
- },
-
- deprecations = {},
-
- lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'],
-
- updateInProgress = false;
-
- // 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');
- }
- }
-
- function hasOwnProp(a, b) {
- return hasOwnProperty.call(a, b);
- }
-
- function defaultParsingFlags() {
- // We need to deep clone this object, and es5 standard is not very
- // helpful.
- return {
- empty : false,
- unusedTokens : [],
- unusedInput : [],
- overflow : -2,
- charsLeftOver : 0,
- nullInput : false,
- invalidMonth : null,
- invalidFormat : false,
- userInvalidated : false,
- iso: false
- };
- }
-
- function printMsg(msg) {
- if (moment.suppressDeprecationWarnings === false &&
- typeof console !== 'undefined' && console.warn) {
- console.warn('Deprecation warning: ' + msg);
- }
- }
-
- function deprecate(msg, fn) {
- var firstTime = true;
- return extend(function () {
- if (firstTime) {
- printMsg(msg);
- firstTime = false;
- }
- return fn.apply(this, arguments);
- }, fn);
- }
-
- function deprecateSimple(name, msg) {
- if (!deprecations[name]) {
- printMsg(msg);
- deprecations[name] = true;
- }
- }
-
- function padToken(func, count) {
- return function (a) {
- return leftZeroFill(func.call(this, a), count);
- };
- }
- function ordinalizeToken(func, period) {
- return function (a) {
- return this.localeData().ordinal(func.call(this, a), period);
- };
- }
-
- function monthDiff(a, b) {
- // difference in months
- var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
- // b is in (anchor - 1 month, anchor + 1 month)
- anchor = a.clone().add(wholeMonthDiff, 'months'),
- anchor2, adjust;
-
- if (b - anchor < 0) {
- anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
- // linear across the month
- adjust = (b - anchor) / (anchor - anchor2);
- } else {
- anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
- // linear across the month
- adjust = (b - anchor) / (anchor2 - anchor);
- }
-
- return -(wholeMonthDiff + adjust);
- }
-
- while (ordinalizeTokens.length) {
- i = ordinalizeTokens.pop();
- formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
- }
- while (paddedTokens.length) {
- i = paddedTokens.pop();
- formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
- }
- formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
-
-
- function meridiemFixWrap(locale, hour, meridiem) {
- var isPm;
-
- if (meridiem == null) {
- // nothing to do
- return hour;
- }
- if (locale.meridiemHour != null) {
- return locale.meridiemHour(hour, meridiem);
- } else if (locale.isPM != null) {
- // Fallback
- isPm = locale.isPM(meridiem);
- if (isPm && hour < 12) {
- hour += 12;
- }
- if (!isPm && hour === 12) {
- hour = 0;
- }
- return hour;
- } else {
- // thie is not supposed to happen
- return hour;
- }
- }
-
- /************************************
- Constructors
- ************************************/
-
- function Locale() {
- }
-
- // Moment prototype object
- function Moment(config, skipOverflow) {
- if (skipOverflow !== false) {
- checkOverflow(config);
- }
- copyConfig(this, config);
- this._d = new Date(+config._d);
- // Prevent infinite loop in case updateOffset creates new moment
- // objects.
- if (updateInProgress === false) {
- updateInProgress = true;
- moment.updateOffset(this);
- updateInProgress = false;
- }
- }
-
- // 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();
- }
-
- /************************************
- Helpers
- ************************************/
-
-
- function extend(a, b) {
- for (var i in b) {
- if (hasOwnProp(b, i)) {
- a[i] = b[i];
- }
- }
-
- if (hasOwnProp(b, 'toString')) {
- a.toString = b.toString;
- }
-
- if (hasOwnProp(b, 'valueOf')) {
- a.valueOf = b.valueOf;
- }
-
- return a;
- }
-
- function copyConfig(to, from) {
- var i, prop, val;
-
- if (typeof from._isAMomentObject !== 'undefined') {
- to._isAMomentObject = from._isAMomentObject;
- }
- if (typeof from._i !== 'undefined') {
- to._i = from._i;
- }
- if (typeof from._f !== 'undefined') {
- to._f = from._f;
- }
- if (typeof from._l !== 'undefined') {
- to._l = from._l;
- }
- if (typeof from._strict !== 'undefined') {
- to._strict = from._strict;
- }
- if (typeof from._tzm !== 'undefined') {
- to._tzm = from._tzm;
- }
- if (typeof from._isUTC !== 'undefined') {
- to._isUTC = from._isUTC;
- }
- if (typeof from._offset !== 'undefined') {
- to._offset = from._offset;
- }
- if (typeof from._pf !== 'undefined') {
- to._pf = from._pf;
- }
- if (typeof from._locale !== 'undefined') {
- to._locale = from._locale;
- }
-
- if (momentProperties.length > 0) {
- for (i in momentProperties) {
- prop = momentProperties[i];
- val = from[prop];
- if (typeof val !== 'undefined') {
- to[prop] = val;
- }
- }
- }
-
- return to;
- }
-
- function absRound(number) {
- if (number < 0) {
- return Math.ceil(number);
- } else {
- return Math.floor(number);
- }
- }
-
- // 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;
- }
-
- function positiveMomentsDifference(base, other) {
- var res = {milliseconds: 0, months: 0};
-
- res.months = other.month() - base.month() +
- (other.year() - base.year()) * 12;
- if (base.clone().add(res.months, 'M').isAfter(other)) {
- --res.months;
- }
-
- res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
-
- 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;
- }
-
- return res;
- }
-
- // 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;
- };
- }
-
- function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
- var milliseconds = duration._milliseconds,
- days = duration._days,
- months = duration._months;
- updateOffset = updateOffset == null ? true : updateOffset;
-
- if (milliseconds) {
- mom._d.setTime(+mom._d + milliseconds * isAdding);
- }
- if (days) {
- rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
- }
- if (months) {
- rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
- }
- if (updateOffset) {
- moment.updateOffset(mom, days || months);
- }
- }
-
- // check if is an array
- function isArray(input) {
- return Object.prototype.toString.call(input) === '[object Array]';
- }
-
- function isDate(input) {
- return Object.prototype.toString.call(input) === '[object Date]' ||
- input instanceof Date;
- }
+ /**
+ * 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';
- // 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;
- }
+ /**
+ * 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';
- function normalizeUnits(units) {
- if (units) {
- var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
- units = unitAliases[units] || camelFunctions[lowered] || lowered;
- }
- return units;
- }
+ /**
+ * if the window events are set...
+ * @property READY
+ * @writeOnce
+ * @type {Boolean}
+ * @default false
+ */
+ Hammer.READY = false;
- function normalizeObjectUnits(inputObject) {
- var normalizedInput = {},
- normalizedProp,
- prop;
+ /**
+ * plugins namespace
+ * @property plugins
+ * @type {Object}
+ */
+ Hammer.plugins = Hammer.plugins || {};
- for (prop in inputObject) {
- if (hasOwnProp(inputObject, prop)) {
- normalizedProp = normalizeUnits(prop);
- if (normalizedProp) {
- normalizedInput[normalizedProp] = inputObject[prop];
- }
- }
- }
+ /**
+ * gestures namespace
+ * see `/gestures` for the definitions
+ * @property gestures
+ * @type {Object}
+ */
+ Hammer.gestures = Hammer.gestures || {};
- return normalizedInput;
+ /**
+ * 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 makeList(field) {
- var count, setter;
-
- if (field.indexOf('week') === 0) {
- count = 7;
- setter = 'day';
- }
- else if (field.indexOf('month') === 0) {
- count = 12;
- setter = 'month';
- }
- else {
- return;
- }
-
- moment[field] = function (format, index) {
- var i, getter,
- method = moment._locale[field],
- results = [];
-
- if (typeof format === 'number') {
- index = format;
- format = undefined;
- }
+ // find what eventtypes we add listeners to
+ Event.determineEventTypes();
- getter = function (i) {
- var m = moment().utc().set(setter, i);
- return method.call(moment._locale, m, format || '');
- };
+ // Register all gestures inside Hammer.gestures
+ Utils.each(Hammer.gestures, function(gesture) {
+ Detection.register(gesture);
+ });
- if (index != null) {
- return getter(index);
- }
- else {
- for (i = 0; i < count; i++) {
- results.push(getter(i));
- }
- return results;
- }
- };
- }
+ // Add touch events on the document
+ Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect);
+ Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect);
- function toInt(argumentForCoercion) {
- var coercedNumber = +argumentForCoercion,
- value = 0;
+ // Hammer is ready...!
+ Hammer.READY = true;
+ }
- if (coercedNumber !== 0 && isFinite(coercedNumber)) {
- if (coercedNumber >= 0) {
- value = Math.floor(coercedNumber);
- } else {
- value = Math.ceil(coercedNumber);
+ /**
+ * @module hammer
+ *
+ * @class Utils
+ * @static
+ */
+ var Utils = Hammer.utils = {
+ /**
+ * extend method, could also be used for cloning when `dest` is an empty object.
+ * changes the dest object
+ * @method extend
+ * @param {Object} dest
+ * @param {Object} src
+ * @param {Boolean} [merge=false] do a merge
+ * @return {Object} dest
+ */
+ extend: function extend(dest, src, merge) {
+ for(var key in src) {
+ if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) {
+ continue;
}
+ dest[key] = src[key];
}
+ return dest;
+ },
- return value;
- }
-
- function daysInMonth(year, month) {
- return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
- }
-
- function weeksInYear(year, dow, doy) {
- return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
- }
-
- function daysInYear(year) {
- return isLeapYear(year) ? 366 : 365;
- }
-
- function isLeapYear(year) {
- return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
- }
-
- function checkOverflow(m) {
- var overflow;
- if (m._a && m._pf.overflow === -2) {
- overflow =
- m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
- m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
- m._a[HOUR] < 0 || m._a[HOUR] > 24 ||
- (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 ||
- m._a[SECOND] !== 0 ||
- m._a[MILLISECOND] !== 0)) ? HOUR :
- m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
- m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
- m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
- -1;
-
- if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
- overflow = DATE;
- }
+ /**
+ * 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);
+ },
- m._pf.overflow = overflow;
- }
- }
+ /**
+ * 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 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;
+ /**
+ * 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;
- if (m._strict) {
- m._isValid = m._isValid &&
- m._pf.charsLeftOver === 0 &&
- m._pf.unusedTokens.length === 0 &&
- m._pf.bigHour === undefined;
+ // 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;
+ }
}
}
- return m._isValid;
- }
-
- function normalizeLocale(key) {
- return key ? key.toLowerCase().replace('_', '-') : key;
- }
+ },
- // 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;
+ /**
+ * 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;
+ },
- 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;
+ /**
+ * 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;
}
- j--;
}
- i++;
+ return 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) { }
+ /**
+ * convert an array-like object (`arguments`, `touchlist`) to an array
+ * @method toArray
+ * @param {Object} obj
+ * @return {Array}
+ */
+ toArray: function toArray(obj) {
+ return Array.prototype.slice.call(obj, 0);
+ },
+
+ /**
+ * find if a node is in the given parent
+ * @method hasParent
+ * @param {HTMLElement} node
+ * @param {HTMLElement} parent
+ * @return {Boolean} found
+ */
+ hasParent: function hasParent(node, parent) {
+ while(node) {
+ if(node == parent) {
+ return true;
+ }
+ node = node.parentNode;
}
- return locales[name];
- }
+ return false;
+ },
- // Return a moment from input, that is local/utc/utcOffset equivalent to
- // model.
- function makeAs(input, model) {
- var res, diff;
- if (model._isUTC) {
- res = model.clone();
- diff = (moment.isMoment(input) || isDate(input) ?
- +input : +moment(input)) - (+res);
- // Use low-level api, because this fn is low-level api.
- res._d.setTime(+res._d + diff);
- moment.updateOffset(res, false);
- return res;
- } else {
- return moment(input).local();
+ /**
+ * get the center of all the touches
+ * @method getCenter
+ * @param {Array} touches
+ * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties
+ */
+ getCenter: function getCenter(touches) {
+ var pageX = [],
+ pageY = [],
+ clientX = [],
+ clientY = [],
+ min = Math.min,
+ max = Math.max;
+
+ // no need to loop when only one touch
+ if(touches.length === 1) {
+ return {
+ pageX: touches[0].pageX,
+ pageY: touches[0].pageY,
+ clientX: touches[0].clientX,
+ clientY: touches[0].clientY
+ };
}
- }
- /************************************
- Locale
- ************************************/
+ Utils.each(touches, function(touch) {
+ pageX.push(touch.pageX);
+ pageY.push(touch.pageY);
+ clientX.push(touch.clientX);
+ clientY.push(touch.clientY);
+ });
+ return {
+ pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2,
+ pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2,
+ clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2,
+ clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2
+ };
+ },
- extend(Locale.prototype, {
+ /**
+ * 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
+ };
+ },
- set : function (config) {
- var prop, i;
- for (i in config) {
- prop = config[i];
- if (typeof prop === 'function') {
- this[i] = prop;
- } else {
- this['_' + i] = prop;
- }
- }
- // Lenient ordinal parsing accepts just a number in addition to
- // number + (possibly) stuff coming from _ordinalParseLenient.
- this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source);
- },
+ /**
+ * 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;
- _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
- months : function (m) {
- return this._months[m.month()];
- },
+ return Math.atan2(y, x) * 180 / Math.PI;
+ },
- _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
- monthsShort : function (m) {
- return this._monthsShort[m.month()];
- },
+ /**
+ * 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);
- monthsParse : function (monthName, format, strict) {
- var i, mom, regex;
+ if(x >= y) {
+ return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ }
+ return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN;
+ },
- if (!this._monthsParse) {
- this._monthsParse = [];
- this._longMonthsParse = [];
- this._shortMonthsParse = [];
- }
+ /**
+ * 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;
- for (i = 0; i < 12; i++) {
- // make the regex if we don't have it already
- mom = moment.utc([2000, i]);
- if (strict && !this._longMonthsParse[i]) {
- this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
- this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
- }
- if (!strict && !this._monthsParse[i]) {
- regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
- this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
- return i;
- } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
- return i;
- } else if (!strict && this._monthsParse[i].test(monthName)) {
- return i;
- }
- }
- },
+ return Math.sqrt((x * x) + (y * y));
+ },
- _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
- weekdays : function (m) {
- return this._weekdays[m.day()];
- },
+ /**
+ * 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;
+ },
- _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
- weekdaysShort : function (m) {
- return this._weekdaysShort[m.day()];
- },
+ /**
+ * 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;
+ },
- _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
- weekdaysMin : function (m) {
- return this._weekdaysMin[m.day()];
- },
+ /**
+ * 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;
+ },
- weekdaysParse : function (weekdayName) {
- var i, mom, regex;
+ /**
+ * 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);
- if (!this._weekdaysParse) {
- this._weekdaysParse = [];
+ 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);
}
- 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;
- }
+ // test the style
+ if(p in element.style) {
+ element.style[p] = (toggle == null || toggle) && value || '';
+ break;
}
- },
+ }
+ },
- _longDateFormat : {
- LTS : 'h:mm:ss A',
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY LT',
- LLLL : 'dddd, MMMM D, YYYY LT'
- },
- longDateFormat : function (key) {
- var output = this._longDateFormat[key];
- if (!output && this._longDateFormat[key.toUpperCase()]) {
- output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
- return val.slice(1);
- });
- this._longDateFormat[key] = output;
- }
- return output;
- },
+ /**
+ * 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;
+ }
- 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');
- },
+ // set the css properties
+ Utils.each(props, function(value, prop) {
+ Utils.setPrefixedCss(element, prop, value, toggle);
+ });
- _meridiemParse : /[ap]\.?m?\.?/i,
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'pm' : 'PM';
- } else {
- return isLower ? 'am' : 'AM';
- }
- },
+ var falseFn = toggle && function() {
+ return false;
+ };
+ // also the disable onselectstart
+ if(props.userSelect == 'none') {
+ element.onselectstart = falseFn;
+ }
+ // and disable ondragstart
+ if(props.userDrag == 'none') {
+ element.ondragstart = falseFn;
+ }
+ },
- _calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- calendar : function (key, mom, now) {
- var output = this._calendar[key];
- return typeof output === 'function' ? output.apply(mom, [now]) : output;
- },
+ /**
+ * 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();
+ });
+ }
+ };
- _relativeTime : {
- future : 'in %s',
- past : '%s ago',
- s : 'a few seconds',
- m : 'a minute',
- mm : '%d minutes',
- h : 'an hour',
- hh : '%d hours',
- d : 'a day',
- dd : '%d days',
- M : 'a month',
- MM : '%d months',
- y : 'a year',
- yy : '%d years'
- },
- relativeTime : function (number, withoutSuffix, string, isFuture) {
- var output = this._relativeTime[string];
- return (typeof output === 'function') ?
- output(number, withoutSuffix, string, isFuture) :
- output.replace(/%d/i, number);
- },
+ /**
+ * @module hammer
+ */
+ /**
+ * @class Event
+ * @static
+ */
+ var Event = Hammer.event = {
+ /**
+ * when touch events have been fired, this is true
+ * this is used to stop mouse events
+ * @property prevent_mouseevents
+ * @private
+ * @type {Boolean}
+ */
+ preventMouseEvents: false,
+
+ /**
+ * if EVENT_START has been fired
+ * @property started
+ * @private
+ * @type {Boolean}
+ */
+ started: false,
+
+ /**
+ * when the mouse is hold down, this is true
+ * @property should_detect
+ * @private
+ * @type {Boolean}
+ */
+ shouldDetect: false,
+
+ /**
+ * simple event binder with a hook and support for multiple types
+ * @method on
+ * @param {HTMLElement} element
+ * @param {String} type
+ * @param {Function} handler
+ * @param {Function} [hook]
+ * @param {Object} hook.type
+ */
+ on: function on(element, type, handler, hook) {
+ var types = type.split(' ');
+ Utils.each(types, function(type) {
+ Utils.on(element, type, handler);
+ hook && hook(type);
+ });
+ },
+
+ /**
+ * simple event unbinder with a hook and support for multiple types
+ * @method off
+ * @param {HTMLElement} element
+ * @param {String} type
+ * @param {Function} handler
+ * @param {Function} [hook]
+ * @param {Object} hook.type
+ */
+ off: function off(element, type, handler, hook) {
+ var types = type.split(' ');
+ Utils.each(types, function(type) {
+ Utils.off(element, type, handler);
+ hook && hook(type);
+ });
+ },
- pastFuture : function (diff, output) {
- var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
- return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
- },
+ /**
+ * 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;
- ordinal : function (number) {
- return this._ordinal.replace('%d', number);
- },
- _ordinal : '%d',
- _ordinalParse : /\d{1,2}/,
+ var onTouchHandler = function onTouchHandler(ev) {
+ var srcType = ev.type.toLowerCase(),
+ isPointer = Hammer.HAS_POINTEREVENTS,
+ isMouse = Utils.inStr(srcType, 'mouse'),
+ triggerType;
- preparse : function (string) {
- return string;
- },
+ // 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;
- postformat : function (string) {
- return string;
- },
+ // 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;
+ }
- week : function (mom) {
- return weekOfYear(mom, this._week.dow, this._week.doy).week;
- },
+ // update the pointer event before entering the detection
+ if(isPointer && eventType != EVENT_END) {
+ PointerEvent.updatePointer(eventType, ev);
+ }
- _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.
- },
+ // we are in a touch/down state, so allowed detection of gestures
+ if(self.shouldDetect) {
+ triggerType = self.doDetect.call(self, ev, eventType, element, handler);
+ }
- firstDayOfWeek : function () {
- return this._week.dow;
- },
+ // ...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
+ }
- firstDayOfYear : function () {
- return this._week.doy;
- },
+ if(isPointer && eventType == EVENT_END) {
+ PointerEvent.updatePointer(eventType, ev);
+ }
+ };
- _invalidDate: 'Invalid date',
- invalidDate: function () {
- return this._invalidDate;
- }
- });
+ this.on(element, EVENT_TYPES[eventType], onTouchHandler);
+ return onTouchHandler;
+ },
- /************************************
- Formatting
- ************************************/
+ /**
+ * 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;
- function removeFormattingTokens(input) {
- if (input.match(/\[[\s\S]/)) {
- return input.replace(/^\[|\]$/g, '');
+ // keep track of how many touches have been removed
+ changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1);
}
- return input.replace(/\\/g, '');
- }
-
- function makeFormatFunction(format) {
- var array = format.match(formattingTokens), i, length;
- for (i = 0, length = array.length; i < length; i++) {
- if (formatTokenFunctions[array[i]]) {
- array[i] = formatTokenFunctions[array[i]];
- } else {
- array[i] = removeFormattingTokens(array[i]);
- }
+ // 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;
}
- return function (mom) {
- var output = '';
- for (i = 0; i < length; i++) {
- output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
- }
- return output;
- };
- }
-
- // format date using native date object
- function formatMoment(m, format) {
- if (!m.isValid()) {
- return m.localeData().invalidDate();
- }
+ // detection has been started, we keep track of this, see above
+ this.started = true;
- format = expandFormat(format, m.localeData());
+ // generate some event data, some basic information
+ var evData = this.collectEventData(element, triggerType, touchList, ev);
- if (!formatFunctions[format]) {
- formatFunctions[format] = makeFormatFunction(format);
+ // 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);
}
- return formatFunctions[format](m);
- }
+ // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed
+ if(triggerChange) {
+ evData.changedLength = changedLength;
+ evData.eventType = triggerChange;
- function expandFormat(format, locale) {
- var i = 5;
+ handler.call(Detection, evData);
- function replaceLongDateFormatTokens(input) {
- return locale.longDateFormat(input) || input;
+ evData.eventType = triggerType;
+ delete evData.changedLength;
}
- localFormattingTokens.lastIndex = 0;
- while (i >= 0 && localFormattingTokens.test(format)) {
- format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
- localFormattingTokens.lastIndex = 0;
- i -= 1;
+ // trigger the END event
+ if(triggerType == EVENT_END) {
+ handler.call(Detection, evData);
+
+ // ...and we are done with the detection
+ // so reset everything to start each detection totally fresh
+ this.started = false;
}
- return format;
- }
+ 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'
+ ];
+ }
- /************************************
- Parsing
- ************************************/
+ EVENT_TYPES[EVENT_START] = types[0];
+ EVENT_TYPES[EVENT_MOVE] = types[1];
+ EVENT_TYPES[EVENT_END] = types[2];
+ return EVENT_TYPES;
+ },
+ /**
+ * 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 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;
+ // get the touchlist
+ if(ev.touches) {
+ if(eventType == EVENT_MOVE) {
+ return ev.touches;
}
- /* falls through */
- case 'DDD':
- return parseTokenOneToThreeDigits;
- case 'MMM':
- case 'MMMM':
- case 'dd':
- case 'ddd':
- case 'dddd':
- return parseTokenWord;
- case 'a':
- case 'A':
- return config._locale._meridiemParse;
- case 'x':
- return parseTokenOffsetMs;
- case 'X':
- return parseTokenTimestampMs;
- case 'Z':
- case 'ZZ':
- return parseTokenTimezone;
- case 'T':
- return parseTokenT;
- case 'SSSS':
- return parseTokenDigits;
- case 'MM':
- case 'DD':
- case 'YY':
- case 'GG':
- case 'gg':
- case 'HH':
- case 'hh':
- case 'mm':
- case 'ss':
- case 'ww':
- case 'WW':
- return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
- case 'M':
- case 'D':
- case 'd':
- case 'H':
- case 'h':
- case 'm':
- case 's':
- case 'w':
- case 'W':
- case 'e':
- case 'E':
- return parseTokenOneOrTwoDigits;
- case 'Do':
- return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient;
- default :
- a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
- return a;
- }
- }
- function utcOffsetFromString(string) {
- string = string || '';
- var possibleTzMatches = (string.match(parseTokenTimezone) || []),
- tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
- parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
- minutes = +(parts[1] * 60) + toInt(parts[2]);
+ var identifiers = [];
+ var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches));
+ var touchList = [];
- return parts[0] === '+' ? minutes : -minutes;
- }
+ Utils.each(concat, function(touch) {
+ if(Utils.inArray(identifiers, touch.identifier) === false) {
+ touchList.push(touch);
+ }
+ identifiers.push(touch.identifier);
+ });
- // function to convert string input to date
- function addTimeToArrayFromToken(token, input, config) {
- var a, datePartArray = config._a;
+ return touchList;
+ }
- switch (token) {
- // QUARTER
- case 'Q':
- if (input != null) {
- datePartArray[MONTH] = (toInt(input) - 1) * 3;
- }
- break;
- // MONTH
- case 'M' : // fall through to MM
- case 'MM' :
- if (input != null) {
- datePartArray[MONTH] = toInt(input) - 1;
- }
- break;
- case 'MMM' : // fall through to MMMM
- case 'MMMM' :
- a = config._locale.monthsParse(input, token, config._strict);
- // if we didn't find a month name, mark the date as invalid.
- if (a != null) {
- datePartArray[MONTH] = a;
- } else {
- config._pf.invalidMonth = input;
- }
- break;
- // DAY OF MONTH
- case 'D' : // fall through to DD
- case 'DD' :
- if (input != null) {
- datePartArray[DATE] = toInt(input);
- }
- break;
- case 'Do' :
- if (input != null) {
- datePartArray[DATE] = toInt(parseInt(
- input.match(/\d{1,2}/)[0], 10));
- }
- break;
- // DAY OF YEAR
- case 'DDD' : // fall through to DDDD
- case 'DDDD' :
- if (input != null) {
- config._dayOfYear = toInt(input);
- }
+ // make fake touchList from mouse position
+ ev.identifier = 1;
+ return [ev];
+ },
- break;
- // YEAR
- case 'YY' :
- datePartArray[YEAR] = moment.parseTwoDigitYear(input);
- break;
- case 'YYYY' :
- case 'YYYYY' :
- case 'YYYYYY' :
- datePartArray[YEAR] = toInt(input);
- break;
- // AM / PM
- case 'a' : // fall through to A
- case 'A' :
- config._meridiem = input;
- // config._isPm = config._locale.isPM(input);
- break;
- // HOUR
- case 'h' : // fall through to hh
- case 'hh' :
- config._pf.bigHour = true;
- /* falls through */
- case 'H' : // fall through to HH
- case 'HH' :
- datePartArray[HOUR] = toInt(input);
- break;
- // MINUTE
- case 'm' : // fall through to mm
- case 'mm' :
- datePartArray[MINUTE] = toInt(input);
- break;
- // SECOND
- case 's' : // fall through to ss
- case 'ss' :
- datePartArray[SECOND] = toInt(input);
- break;
- // MILLISECOND
- case 'S' :
- case 'SS' :
- case 'SSS' :
- case 'SSSS' :
- datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
- break;
- // UNIX OFFSET (MILLISECONDS)
- case 'x':
- config._d = new Date(toInt(input));
- break;
- // UNIX TIMESTAMP WITH MS
- case 'X':
- config._d = new Date(parseFloat(input) * 1000);
- break;
- // TIMEZONE
- case 'Z' : // fall through to ZZ
- case 'ZZ' :
- config._useUTC = true;
- config._tzm = utcOffsetFromString(input);
- break;
- // WEEKDAY - human
- case 'dd':
- case 'ddd':
- case 'dddd':
- a = config._locale.weekdaysParse(input);
- // if we didn't get a weekday name, mark the date as invalid
- if (a != null) {
- config._w = config._w || {};
- config._w['d'] = a;
- } else {
- config._pf.invalidWeekday = input;
- }
- break;
- // WEEK, WEEK DAY - numeric
- case 'w':
- case 'ww':
- case 'W':
- case 'WW':
- case 'd':
- case 'e':
- case 'E':
- token = token.substr(0, 1);
- /* falls through */
- case 'gggg':
- case 'GGGG':
- case 'GGGGG':
- token = token.substr(0, 2);
- if (input) {
- config._w = config._w || {};
- config._w[token] = toInt(input);
- }
- break;
- case 'gg':
- case 'GG':
- config._w = config._w || {};
- config._w[token] = moment.parseTwoDigitYear(input);
+ /**
+ * collect basic event data
+ * @method collectEventData
+ * @param {HTMLElement} element
+ * @param {String} eventType matches `EVENT_START|MOVE|END`
+ * @param {Array} touches
+ * @param {Object} ev
+ * @return {Object} ev
+ */
+ collectEventData: function collectEventData(element, eventType, touches, ev) {
+ // find out pointerType
+ var pointerType = POINTER_TOUCH;
+ if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) {
+ pointerType = POINTER_MOUSE;
+ } else if(PointerEvent.matchType(POINTER_PEN, ev)) {
+ pointerType = POINTER_PEN;
}
+
+ return {
+ center: Utils.getCenter(touches),
+ timeStamp: Date.now(),
+ target: ev.target,
+ touches: touches,
+ eventType: eventType,
+ pointerType: pointerType,
+ srcEvent: ev,
+
+ /**
+ * 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();
+ },
+
+ /**
+ * stop bubbling the event up to its parents
+ */
+ stopPropagation: function() {
+ this.srcEvent.stopPropagation();
+ },
+
+ /**
+ * immediately stop gesture detection
+ * might be useful after a swipe was detected
+ * @return {*}
+ */
+ stopDetect: function() {
+ return Detection.stopDetect();
+ }
+ };
}
+ };
- function dayOfYearFromWeekInfo(config) {
- var w, weekYear, week, weekday, dow, doy, temp;
- w = config._w;
- if (w.GG != null || w.W != null || w.E != null) {
- dow = 1;
- doy = 4;
+ /**
+ * @module hammer
+ *
+ * @class PointerEvent
+ * @static
+ */
+ var PointerEvent = Hammer.PointerEvent = {
+ /**
+ * holds all pointers, by `identifier`
+ * @property pointers
+ * @type {Object}
+ */
+ pointers: {},
- // 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;
+ /**
+ * 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;
+ },
- weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
- week = dfl(w.w, 1);
+ /**
+ * 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 (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;
- }
+ /**
+ * 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;
}
- temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
- config._a[YEAR] = temp.year;
- config._dayOfYear = temp.dayOfYear;
+ var pt = ev.pointerType,
+ types = {};
+
+ types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE));
+ types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH));
+ types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN));
+ return types[pointerType];
+ },
+
+ /**
+ * reset the stored pointers
+ * @method reset
+ */
+ reset: function resetList() {
+ this.pointers = {};
}
+ };
- // 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) {
+ /**
+ * @module hammer
+ *
+ * @class Detection
+ * @static
+ */
+ var Detection = Hammer.detection = {
+ // contains all registred Hammer.gestures in the correct order
+ gestures: [],
+
+ // data of the current Hammer.gesture detection session
+ current: null,
+
+ // the previous Hammer.gesture session data
+ // is a full clone of the previous gesture.current object
+ previous: null,
+
+ // when this becomes true, no gestures are fired
+ stopped: false,
+
+ /**
+ * 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;
}
- currentDate = currentDateArray(config);
+ this.stopped = false;
- //compute day of the year from weeks and weekdays
- if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
- dayOfYearFromWeekInfo(config);
+ // 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
+ };
+
+ this.detect(eventData);
+ },
+
+ /**
+ * Hammer.gesture detection
+ * @method detect
+ * @param {Object} eventData
+ * @return {any}
+ */
+ detect: function detect(eventData) {
+ if(!this.current || this.stopped) {
+ return;
}
- //if the day of the year is set, figure out what it is
- if (config._dayOfYear) {
- yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
+ // extend event data with calculations about scale, distance etc
+ eventData = this.extendEventData(eventData);
- if (config._dayOfYear > daysInYear(yearToUse)) {
- config._pf._overflowDayOfYear = true;
+ // 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);
}
+ }, this);
- date = makeUTCDate(yearToUse, 0, config._dayOfYear);
- config._a[MONTH] = date.getUTCMonth();
- config._a[DATE] = date.getUTCDate();
+ // store as previous event event
+ if(this.current) {
+ this.current.lastEvent = eventData;
}
- // Default to current date.
- // * if no year, month, day of month are given, default to today
- // * if day of month is given, default month and year
- // * if month is given, default only year
- // * if year is given, don't default anything
- for (i = 0; i < 3 && config._a[i] == null; ++i) {
- config._a[i] = input[i] = currentDate[i];
+ if(eventData.eventType == EVENT_END) {
+ this.stopDetect();
}
- // 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];
+ return eventData;
+ },
+
+ /**
+ * clear the Hammer.gesture vars
+ * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected
+ * to stop other Hammer.gestures from being fired
+ * @method stopDetect
+ */
+ stopDetect: function stopDetect() {
+ // clone current data to the store as the previous gesture
+ // used for the double tap gesture, since this is an other gesture detect session
+ this.previous = Utils.extend({}, this.current);
+
+ // reset the current
+ this.current = null;
+ this.stopped = true;
+ },
+
+ /**
+ * calculate velocity, angle and direction
+ * @method getVelocityData
+ * @param {Object} ev
+ * @param {Object} center
+ * @param {Number} deltaTime
+ * @param {Number} deltaX
+ * @param {Number} deltaY
+ */
+ getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) {
+ var cur = this.current,
+ recalc = false,
+ calcEv = cur.lastCalcEvent,
+ calcData = cur.lastCalcData;
+
+ 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;
}
- // Check for 24:00:00.000
- if (config._a[HOUR] === 24 &&
- config._a[MINUTE] === 0 &&
- config._a[SECOND] === 0 &&
- config._a[MILLISECOND] === 0) {
- config._nextDay = true;
- config._a[HOUR] = 0;
+ if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) {
+ cur.futureCalcEvent = ev;
}
- config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
- // Apply timezone offset from input. The actual utcOffset can be changed
- // with parseZone.
- if (config._tzm != null) {
- config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+ 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;
}
- if (config._nextDay) {
- config._a[HOUR] = 24;
+ 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;
+
+ // update the start touchlist to calculate the scale/rotation
+ if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) {
+ startEv.touches = [];
+ Utils.each(ev.touches, function(touch) {
+ startEv.touches.push({
+ clientX: touch.clientX,
+ clientY: touch.clientY
+ });
+ });
+ }
+
+ var deltaTime = ev.timeStamp - startEv.timeStamp,
+ deltaX = ev.center.clientX - startEv.center.clientX,
+ deltaY = ev.center.clientY - startEv.center.clientY;
+
+ this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY);
+
+ Utils.extend(ev, {
+ startEvent: startEv,
+
+ deltaTime: deltaTime,
+ deltaX: deltaX,
+ deltaY: deltaY,
+
+ distance: Utils.getDistance(startEv.center, ev.center),
+ angle: Utils.getAngle(startEv.center, ev.center),
+ direction: Utils.getDirection(startEv.center, ev.center),
+ scale: Utils.getScale(startEv.touches, ev.touches),
+ rotation: Utils.getRotation(startEv.touches, ev.touches)
+ });
+
+ return ev;
+ },
+
+ /**
+ * 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;
}
+
+ // extend Hammer default options with the Hammer.gesture options
+ Utils.extend(Hammer.defaults, options, true);
+
+ // set its index
+ gesture.index = gesture.index || 1000;
+
+ // 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;
+ }
+ if(a.index > b.index) {
+ return 1;
+ }
+ return 0;
+ });
+
+ return this.gestures;
}
+ };
- function dateFromObject(config) {
- var normalizedInput;
- if (config._d) {
- return;
+ /**
+ * @module hammer
+ */
+
+ /**
+ * 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;
+
+ // setup HammerJS window events and register all gestures
+ // this also sets up the default options
+ setup();
+
+ /**
+ * @property element
+ * @type {HTMLElement}
+ */
+ this.element = element;
+
+ /**
+ * @property enabled
+ * @type {Boolean}
+ * @protected
+ */
+ this.enabled = true;
+
+ /**
+ * options, merged with the defaults
+ * options with an _ are converted to camelCase
+ * @property options
+ * @type {Object}
+ */
+ Utils.each(options, function(value, name) {
+ delete options[name];
+ options[Utils.toCamelCase(name)] = value;
+ });
+
+ this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {});
+
+ // 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);
+ }
+
+ /**
+ * event start handler on the element to start the detection
+ * @property eventStartHandler
+ * @type {Object}
+ */
+ this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) {
+ if(self.enabled && ev.eventType == EVENT_START) {
+ Detection.startDetect(self, ev);
+ } else if(ev.eventType == EVENT_TOUCH) {
+ Detection.detect(ev);
+ }
+ });
+
+ /**
+ * keep a list of user event handlers which needs to be removed when calling 'dispose'
+ * @property eventHandlers
+ * @type {Array}
+ */
+ this.eventHandlers = [];
+ };
+
+ Hammer.Instance.prototype = {
+ /**
+ * bind events to the instance
+ * @method on
+ * @chainable
+ * @param {String} gestures multiple gestures by splitting with a space
+ * @param {Function} handler
+ * @param {Object} handler.ev event object
+ */
+ on: function onEvent(gestures, handler) {
+ var self = this;
+ Event.on(self.element, gestures, handler, function(type) {
+ self.eventHandlers.push({ gesture: type, handler: handler });
+ });
+ return self;
+ },
+
+ /**
+ * unbind events to the instance
+ * @method off
+ * @chainable
+ * @param {String} gestures
+ * @param {Function} handler
+ */
+ off: function offEvent(gestures, handler) {
+ var self = this;
+
+ Event.off(self.element, gestures, handler, function(type) {
+ var index = Utils.inArray({ gesture: type, handler: handler });
+ if(index !== false) {
+ self.eventHandlers.splice(index, 1);
+ }
+ });
+ return self;
+ },
+
+ /**
+ * trigger gesture event
+ * @method trigger
+ * @chainable
+ * @param {String} gesture
+ * @param {Object} [eventData]
+ */
+ trigger: function triggerEvent(gesture, eventData) {
+ // optional
+ if(!eventData) {
+ eventData = {};
}
- normalizedInput = normalizeObjectUnits(config._i);
- config._a = [
- normalizedInput.year,
- normalizedInput.month,
- normalizedInput.day || normalizedInput.date,
- normalizedInput.hour,
- normalizedInput.minute,
- normalizedInput.second,
- normalizedInput.millisecond
- ];
-
- dateFromConfig(config);
- }
+ // create DOM event
+ var event = Hammer.DOCUMENT.createEvent('Event');
+ event.initEvent(gesture, true, true);
+ event.gesture = eventData;
- 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 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;
}
- }
- // date from string and format string
- function makeDateFromStringAndFormat(config) {
- if (config._f === moment.ISO_8601) {
- parseISO(config);
- return;
- }
+ element.dispatchEvent(event);
+ return this;
+ },
- config._a = [];
- config._pf.empty = true;
+ /**
+ * enable of disable hammer.js detection
+ * @method enable
+ * @chainable
+ * @param {Boolean} state
+ */
+ enable: function enable(state) {
+ this.enabled = state;
+ 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;
+ /**
+ * dispose this hammer instance
+ * @method dispose
+ * @return {Null}
+ */
+ dispose: function dispose() {
+ var i, eh;
- tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
+ // undo all changes made by stop_browser_behavior
+ Utils.toggleBehavior(this.element, this.options.behavior, false);
- 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);
- }
+ // unbind all custom event handlers
+ for(i = -1; (eh = this.eventHandlers[++i]);) {
+ Utils.off(this.element, eh.gesture, eh.handler);
}
- // add remaining unparsed input length to the string
- config._pf.charsLeftOver = stringLength - totalParsedInputLength;
- if (string.length > 0) {
- config._pf.unusedInput.push(string);
- }
+ this.eventHandlers = [];
- // clear _12h flag if hour is <= 12
- if (config._pf.bigHour === true && config._a[HOUR] <= 12) {
- config._pf.bigHour = undefined;
- }
- // handle meridiem
- config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR],
- config._meridiem);
- dateFromConfig(config);
- checkOverflow(config);
- }
+ // 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);
+ function dragGesture(ev, inst) {
+ var cur = Detection.current;
+
+ // max touches
+ if(inst.options.dragMaxTouches > 0 &&
+ ev.touches.length > inst.options.dragMaxTouches) {
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);
-
- if (!isValid(tempConfig)) {
- continue;
- }
-
- // if there is any input that was not parsed add a penalty for that format
- currentScore += tempConfig._pf.charsLeftOver;
+ switch(ev.eventType) {
+ case EVENT_START:
+ triggered = false;
+ break;
- //or tokens
- currentScore += tempConfig._pf.unusedTokens.length * 10;
+ 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;
+ }
- tempConfig._pf.score = currentScore;
+ var startCenter = cur.startEvent.center;
- if (scoreToBeat == null || currentScore < scoreToBeat) {
- scoreToBeat = currentScore;
- 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;
- extend(config, bestMoment || tempConfig);
- }
+ // recalculate event data using new start point
+ ev = Detection.extendEventData(ev);
+ }
+ }
- // date from iso format
- function parseISO(config) {
- var i, l,
- string = config._i,
- match = isoRegex.exec(string);
+ // lock drag to axis?
+ if(cur.lastEvent.dragLockToAxis ||
+ ( inst.options.dragLockToAxis &&
+ inst.options.dragLockMinDistance <= ev.distance
+ )) {
+ ev.dragLockToAxis = true;
+ }
- 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;
+ // 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;
+ }
}
- }
- for (i = 0, l = isoTimes.length; i < l; i++) {
- if (isoTimes[i][1].exec(string)) {
- config._f += isoTimes[i][0];
- break;
+
+ // first time, trigger dragstart event
+ if(!triggered) {
+ inst.trigger(name + 'start', ev);
+ triggered = true;
}
- }
- 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);
- }
- }
+ // trigger events
+ inst.trigger(name, ev);
+ inst.trigger(name + ev.direction, ev);
- function map(arr, fn) {
- var res = [], i;
- for (i = 0; i < arr.length; ++i) {
- res.push(fn(arr[i], i));
- }
- return res;
- }
+ var isVertical = Utils.isVertical(ev.direction);
- 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);
- }
- }
+ // block the browser events
+ if((inst.options.dragBlockVertical && isVertical) ||
+ (inst.options.dragBlockHorizontal && !isVertical)) {
+ ev.preventDefault();
+ }
+ break;
- 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);
+ case EVENT_RELEASE:
+ if(triggered && ev.changedLength <= inst.options.dragMaxTouches) {
+ inst.trigger(name + 'end', ev);
+ triggered = false;
+ }
+ break;
- //the date constructor doesn't accept years < 1970
- if (y < 1970) {
- date.setFullYear(y);
+ case EVENT_END:
+ triggered = false;
+ break;
}
- return date;
}
- function makeUTCDate(y) {
- var date = new Date(Date.UTC.apply(null, arguments));
- if (y < 1970) {
- date.setUTCFullYear(y);
- }
- return date;
- }
+ Hammer.gestures.Drag = {
+ name: name,
+ index: 50,
+ handler: dragGesture,
+ defaults: {
+ /**
+ * minimal movement that have to be made before the drag event gets triggered
+ * @property dragMinDistance
+ * @type {Number}
+ * @default 10
+ */
+ dragMinDistance: 10,
- function 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;
- }
+ /**
+ * 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,
- /************************************
- Relative Time
- ************************************/
+ /**
+ * set 0 for unlimited, but this can conflict with transform
+ * @property dragMaxTouches
+ * @type {Number}
+ * @default 1
+ */
+ dragMaxTouches: 1,
+ /**
+ * prevent default browser behavior when dragging occurs
+ * be careful with it, it makes the element a blocking element
+ * when you are using the drag gesture, it is a good practice to set this true
+ * @property dragBlockHorizontal
+ * @type {Boolean}
+ * @default false
+ */
+ dragBlockHorizontal: false,
- // 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);
- }
+ /**
+ * same as `dragBlockHorizontal`, but for vertical movement
+ * @property dragBlockVertical
+ * @type {Boolean}
+ * @default false
+ */
+ dragBlockVertical: 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')),
+ /**
+ * 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,
- 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];
+ /**
+ * 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');
- args[2] = withoutSuffix;
- args[3] = +posNegDuration > 0;
- args[4] = locale;
- return substituteTimeAgo.apply({}, args);
+ /**
+ * @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);
}
+ };
+
+ /**
+ * @module gestures
+ */
+ /**
+ * Touch stays at the same place for x time
+ *
+ * @class Hold
+ * @static
+ */
+ /**
+ * @event hold
+ * @param {Object} ev
+ */
+ /**
+ * @param {String} name
+ */
+ (function(name) {
+ var timer;
- /************************************
- Week of Year
- ************************************/
+ function holdGesture(ev, inst) {
+ var options = inst.options,
+ current = Detection.current;
+ switch(ev.eventType) {
+ case EVENT_START:
+ clearTimeout(timer);
- // 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;
+ // set the gesture so we can check in the timeout if it still is
+ current.name = name;
+ // 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 (daysToDayOfWeek > end) {
- daysToDayOfWeek -= 7;
- }
+ case EVENT_MOVE:
+ if(ev.distance > options.holdThreshold) {
+ clearTimeout(timer);
+ }
+ break;
- if (daysToDayOfWeek < end - 7) {
- daysToDayOfWeek += 7;
+ case EVENT_RELEASE:
+ clearTimeout(timer);
+ break;
}
-
- adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
- return {
- week: Math.ceil(adjustedMoment.dayOfYear() / 7),
- year: adjustedMoment.year()
- };
}
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
- function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
- var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
+ Hammer.gestures.Hold = {
+ name: name,
+ index: 10,
+ defaults: {
+ /**
+ * @property holdTimeout
+ * @type {Number}
+ * @default 500
+ */
+ holdTimeout: 500,
- 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;
+ /**
+ * movement allowed while holding
+ * @property holdThreshold
+ * @type {Number}
+ * @default 2
+ */
+ holdThreshold: 2
+ },
+ handler: holdGesture
+ };
+ })('hold');
- return {
- year: dayOfYear > 0 ? year : year - 1,
- dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
- };
+ /**
+ * @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);
+ }
}
+ };
- /************************************
- Top Level Functions
- ************************************/
+ /**
+ * @module gestures
+ */
+ /**
+ * triggers swipe events when the end velocity is above the threshold
+ * for best usage, set `preventDefault` (on the drag gesture) to `true`
+ * ````
+ * hammertime.on("dragleft swipeleft", function(ev) {
+ * console.log(ev);
+ * ev.gesture.preventDefault();
+ * });
+ * ````
+ *
+ * @class Swipe
+ * @static
+ */
+ /**
+ * @event swipe
+ * @param {Object} ev
+ */
+ /**
+ * @event swipeleft
+ * @param {Object} ev
+ */
+ /**
+ * @event swiperight
+ * @param {Object} ev
+ */
+ /**
+ * @event swipeup
+ * @param {Object} ev
+ */
+ /**
+ * @event swipedown
+ * @param {Object} ev
+ */
+ Hammer.gestures.Swipe = {
+ name: 'swipe',
+ index: 40,
+ defaults: {
+ /**
+ * @property swipeMinTouches
+ * @type {Number}
+ * @default 1
+ */
+ swipeMinTouches: 1,
- function makeMoment(config) {
- var input = config._i,
- format = config._f,
- res;
+ /**
+ * @property swipeMaxTouches
+ * @type {Number}
+ * @default 1
+ */
+ swipeMaxTouches: 1,
- config._locale = config._locale || moment.localeData(config._l);
+ /**
+ * horizontal swipe velocity
+ * @property swipeVelocityX
+ * @type {Number}
+ * @default 0.6
+ */
+ swipeVelocityX: 0.6,
- if (input === null || (format === undefined && input === '')) {
- return moment.invalid({nullInput: true});
- }
+ /**
+ * vertical swipe velocity
+ * @property swipeVelocityY
+ * @type {Number}
+ * @default 0.6
+ */
+ swipeVelocityY: 0.6
+ },
- if (typeof input === 'string') {
- config._i = input = config._locale.preparse(input);
- }
+ handler: function swipeGesture(ev, inst) {
+ if(ev.eventType == EVENT_RELEASE) {
+ var touches = ev.touches.length,
+ options = inst.options;
- if (moment.isMoment(input)) {
- return new Moment(input, true);
- } else if (format) {
- if (isArray(format)) {
- makeDateFromStringAndArray(config);
- } else {
- makeDateFromStringAndFormat(config);
+ // max touches
+ if(touches < options.swipeMinTouches ||
+ touches > options.swipeMaxTouches) {
+ return;
}
- } else {
- makeDateFromInput(config);
- }
- res = new Moment(config);
- if (res._nextDay) {
- // Adding is smart enough around DST
- res.add(1, 'd');
- res._nextDay = undefined;
+ // when the distance we moved is too small we skip this gesture
+ // or we can be already in dragging
+ if(ev.velocityX > options.swipeVelocityX ||
+ ev.velocityY > options.swipeVelocityY) {
+ // trigger swipe events
+ inst.trigger(this.name, ev);
+ inst.trigger(this.name + ev.direction, ev);
+ }
}
-
- return res;
}
+ };
- moment = function (input, format, locale, strict) {
- var c;
+ /**
+ * @module gestures
+ */
+ /**
+ * Single tap and a double tap on a place
+ *
+ * @class Tap
+ * @static
+ */
+ /**
+ * @event tap
+ * @param {Object} ev
+ */
+ /**
+ * @event doubletap
+ * @param {Object} ev
+ */
- if (typeof(locale) === 'boolean') {
- strict = locale;
- locale = undefined;
- }
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c = {};
- c._isAMomentObject = true;
- c._i = input;
- c._f = format;
- c._l = locale;
- c._strict = strict;
- c._isUTC = false;
- c._pf = defaultParsingFlags();
+ /**
+ * @param {String} name
+ */
+ (function(name) {
+ var hasMoved = false;
- return makeMoment(c);
- };
+ function tapGesture(ev, inst) {
+ var options = inst.options,
+ current = Detection.current,
+ prev = Detection.previous,
+ sincePrev,
+ didDoubleTap;
- moment.suppressDeprecationWarnings = false;
+ switch(ev.eventType) {
+ case EVENT_START:
+ hasMoved = false;
+ break;
- moment.createFromInputFallback = deprecate(
- 'moment construction falls back to js Date. This is ' +
- 'discouraged and will be removed in upcoming major ' +
- 'release. Please refer to ' +
- 'https://github.com/moment/moment/issues/1407 for more info.',
- function (config) {
- config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
- }
- );
+ case EVENT_MOVE:
+ hasMoved = hasMoved || (ev.distance > options.tapMaxDistance);
+ break;
- // 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];
- }
+ case EVENT_END:
+ if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) {
+ // previous gesture, for the double tap since these are two different gesture detections
+ sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp;
+ didDoubleTap = false;
+
+ // check if double tap
+ if(prev && prev.name == name &&
+ (sincePrev && sincePrev < options.doubleTapInterval) &&
+ ev.distance < options.doubleTapDistance) {
+ inst.trigger('doubletap', ev);
+ didDoubleTap = true;
+ }
+
+ // do a single tap
+ if(!didDoubleTap || options.tapAlways) {
+ current.name = name;
+ inst.trigger(current.name, ev);
+ }
+ }
+ break;
}
- return res;
}
- moment.min = function () {
- var args = [].slice.call(arguments, 0);
+ 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 pickBy('isBefore', args);
- };
+ /**
+ * max distance of movement of a tap, this is for the slow tappers
+ * @property tapMaxDistance
+ * @type {Number}
+ * @default 10
+ */
+ tapMaxDistance: 10,
- moment.max = function () {
- var args = [].slice.call(arguments, 0);
+ /**
+ * always trigger the `tap` event, even while double-tapping
+ * @property tapAlways
+ * @type {Boolean}
+ * @default true
+ */
+ tapAlways: true,
- return pickBy('isAfter', args);
+ /**
+ * max distance between two taps
+ * @property doubleTapDistance
+ * @type {Number}
+ * @default 20
+ */
+ doubleTapDistance: 20,
+
+ /**
+ * max time between two taps
+ * @property doubleTapInterval
+ * @type {Number}
+ * @default 300
+ */
+ doubleTapInterval: 300
+ }
};
+ })('tap');
- // creating with utc
- moment.utc = function (input, format, locale, strict) {
- var c;
+ /**
+ * @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 (typeof(locale) === 'boolean') {
- strict = locale;
- locale = undefined;
+ /**
+ * 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;
}
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c = {};
- c._isAMomentObject = true;
- c._useUTC = true;
- c._isUTC = true;
- c._l = locale;
- c._i = input;
- c._f = format;
- c._strict = strict;
- c._pf = defaultParsingFlags();
-
- return makeMoment(c).utc();
- };
- // creating with unix timestamp (in seconds)
- moment.unix = function (input) {
- return moment(input * 1000);
- };
+ if(inst.options.preventDefault) {
+ ev.preventDefault();
+ }
- // duration
- moment.duration = function (input, key) {
- var duration = input,
- // matching against regexp is expensive, do it on demand
- match = null,
- sign,
- ret,
- parseIso,
- diffRes;
+ if(ev.eventType == EVENT_TOUCH) {
+ inst.trigger('touch', ev);
+ }
+ }
+ };
- if (moment.isDuration(input)) {
- duration = {
- ms: input._milliseconds,
- d: input._days,
- M: input._months
- };
- } else if (typeof input === 'number') {
- duration = {};
- if (key) {
- duration[key] = input;
- } else {
- duration.milliseconds = input;
- }
- } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
- sign = (match[1] === '-') ? -1 : 1;
- duration = {
- y: 0,
- d: toInt(match[DATE]) * sign,
- h: toInt(match[HOUR]) * sign,
- m: toInt(match[MINUTE]) * sign,
- s: toInt(match[SECOND]) * sign,
- ms: toInt(match[MILLISECOND]) * sign
- };
- } else if (!!(match = isoDurationRegex.exec(input))) {
- sign = (match[1] === '-') ? -1 : 1;
- parseIso = function (inp) {
- // We'd normally use ~~inp for this, but unfortunately it also
- // converts floats to ints.
- // inp may be undefined, so careful calling replace on it.
- var res = inp && parseFloat(inp.replace(',', '.'));
- // apply sign while we're at it
- return (isNaN(res) ? 0 : res) * sign;
- };
- duration = {
- y: parseIso(match[2]),
- M: parseIso(match[3]),
- d: parseIso(match[4]),
- h: parseIso(match[5]),
- m: parseIso(match[6]),
- s: parseIso(match[7]),
- w: parseIso(match[8])
- };
- } else if (duration == null) {// checks for null or undefined
- duration = {};
- } else if (typeof duration === 'object' &&
- ('from' in duration || 'to' in duration)) {
- diffRes = momentsDifference(moment(duration.from), moment(duration.to));
+ /**
+ * @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
+ */
- duration = {};
- duration.ms = diffRes.milliseconds;
- duration.M = diffRes.months;
- }
+ /**
+ * @param {String} name
+ */
+ (function(name) {
+ var triggered = false;
- ret = new Duration(duration);
+ function transformGesture(ev, inst) {
+ switch(ev.eventType) {
+ case EVENT_START:
+ triggered = false;
+ break;
- if (moment.isDuration(input) && hasOwnProp(input, '_locale')) {
- ret._locale = input._locale;
- }
+ case EVENT_MOVE:
+ // at least multitouch
+ if(ev.touches.length < 2) {
+ return;
+ }
- return ret;
- };
+ var scaleThreshold = Math.abs(1 - ev.scale);
+ var rotationThreshold = Math.abs(ev.rotation);
- // version number
- moment.version = VERSION;
+ // 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;
+ }
- // default format
- moment.defaultFormat = isoFormat;
+ // we are transforming!
+ Detection.current.name = name;
- // constant that refers to the ISO standard
- moment.ISO_8601 = function () {};
+ // first time, trigger dragstart event
+ if(!triggered) {
+ inst.trigger(name + 'start', ev);
+ triggered = true;
+ }
- // Plugins that add properties should also add the key here (null value),
- // so we can properly clone ourselves.
- moment.momentProperties = momentProperties;
+ inst.trigger(name, ev); // basic transform event
- // 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 () {};
+ // trigger rotate event
+ if(rotationThreshold > inst.options.transformMinRotation) {
+ inst.trigger('rotate', ev);
+ }
- // 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;
- };
+ // trigger pinch event
+ if(scaleThreshold > inst.options.transformMinScale) {
+ inst.trigger('pinch', ev);
+ inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev);
+ }
+ break;
- moment.lang = deprecate(
- 'moment.lang is deprecated. Use moment.locale instead.',
- function (key, value) {
- return moment.locale(key, value);
+ case EVENT_RELEASE:
+ if(triggered && ev.changedLength < 2) {
+ inst.trigger(name + 'end', ev);
+ triggered = false;
+ }
+ break;
}
- );
+ }
- // 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);
- }
+ Hammer.gestures.Transform = {
+ name: name,
+ index: 45,
+ defaults: {
+ /**
+ * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1
+ * @property transformMinScale
+ * @type {Number}
+ * @default 0.01
+ */
+ transformMinScale: 0.01,
- if (data) {
- moment.duration._locale = moment._locale = data;
- }
- }
+ /**
+ * rotation in degrees
+ * @property transformMinRotation
+ * @type {Number}
+ * @default 1
+ */
+ transformMinRotation: 1
+ },
- return moment._locale._abbr;
+ handler: transformGesture
};
+ })('transform');
- moment.defineLocale = function (name, values) {
- if (values !== null) {
- values.abbr = name;
- if (!locales[name]) {
- locales[name] = new Locale();
- }
- locales[name].set(values);
+ /**
+ * @module hammer
+ */
- // backwards compat for now: also set the locale
- moment.locale(name);
+ // 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;
+ }
- return locales[name];
- } else {
- // useful for testing
- delete locales[name];
- return null;
- }
- };
+ })(window);
- moment.langData = deprecate(
- 'moment.langData is deprecated. Use moment.localeData instead.',
- function (key) {
- return moment.localeData(key);
- }
- );
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
- // returns locale data
- moment.localeData = function (key) {
- var locale;
+ var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js
+ //! version : 2.9.0
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+ //! license : MIT
+ //! momentjs.com
- if (key && key._locale && key._locale._abbr) {
- key = key._locale._abbr;
- }
+ (function (undefined) {
+ /************************************
+ Constants
+ ************************************/
- if (!key) {
- return moment._locale;
- }
+ var moment,
+ VERSION = '2.9.0',
+ // the global-scope this is NOT the global object in Node.js
+ globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this,
+ oldGlobalMoment,
+ round = Math.round,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
+ i,
- if (!isArray(key)) {
- //short-circuit everything else
- locale = loadLocale(key);
- if (locale) {
- return locale;
- }
- key = [key];
- }
+ YEAR = 0,
+ MONTH = 1,
+ DATE = 2,
+ HOUR = 3,
+ MINUTE = 4,
+ SECOND = 5,
+ MILLISECOND = 6,
- return chooseLocale(key);
- };
+ // internal storage for locale config files
+ locales = {},
- // compare moment object
- moment.isMoment = function (obj) {
- return obj instanceof Moment ||
- (obj != null && hasOwnProp(obj, '_isAMomentObject'));
- };
+ // extra moment internal properties (plugins register props here)
+ momentProperties = [],
- // for typechecking Duration objects
- moment.isDuration = function (obj) {
- return obj instanceof Duration;
- };
+ // check for nodeJS
+ hasModule = (typeof module !== 'undefined' && module && module.exports),
- for (i = lists.length - 1; i >= 0; --i) {
- makeList(lists[i]);
- }
+ // ASP.NET json date format regex
+ aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
+ aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
- moment.normalizeUnits = function (units) {
- return normalizeUnits(units);
- };
+ // 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)$/,
- moment.invalid = function (flags) {
- var m = moment.utc(NaN);
- if (flags != null) {
- extend(m._pf, flags);
- }
- else {
- m._pf.userInvalidated = true;
- }
+ // format tokens
+ formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,
+ localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
- return m;
- };
+ // parsing token regexes
+ parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
+ parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
+ parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
+ parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
+ parseTokenDigits = /\d+/, // nonzero number of digits
+ parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
+ parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
+ parseTokenT = /T/i, // T (ISO separator)
+ parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123
+ parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
- moment.parseZone = function () {
- return moment.apply(null, arguments).parseZone();
- };
+ //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
- moment.parseTwoDigitYear = function (input) {
- return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
- };
+ // 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)?)?$/,
- moment.isDate = isDate;
+ isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
- /************************************
- Moment Prototype
- ************************************/
+ 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}/]
+ ],
+ // 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/]
+ ],
- extend(moment.fn = Moment.prototype, {
+ // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30']
+ parseTimezoneChunker = /([\+\-]|\d\d)/gi,
- clone : function () {
- return moment(this);
+ // 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
},
- valueOf : function () {
- return +this._d - ((this._offset || 0) * 60000);
+ 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'
},
- unix : function () {
- return Math.floor(+this / 1000);
+ camelFunctions = {
+ dayofyear : 'dayOfYear',
+ isoweekday : 'isoWeekday',
+ isoweek : 'isoWeek',
+ weekyear : 'weekYear',
+ isoweekyear : 'isoWeekYear'
},
- toString : function () {
- return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
- },
+ // format function strings
+ formatFunctions = {},
- toDate : function () {
- return this._offset ? new Date(+this) : this._d;
+ // 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
},
- toISOString : function () {
- var m = moment(this).utc();
- if (0 < m.year() && m.year() <= 9999) {
- if ('function' === typeof Date.prototype.toISOString) {
- // native implementation is ~50x faster, use it when we can
- return this.toDate().toISOString();
- } else {
- return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ // tokens to ordinalize and pad
+ ordinalizeTokens = 'DDD w W M D d'.split(' '),
+ paddedTokens = 'M D H h m s w W'.split(' '),
+
+ formatTokenFunctions = {
+ M : function () {
+ return this.month() + 1;
+ },
+ MMM : function (format) {
+ return this.localeData().monthsShort(this, format);
+ },
+ MMMM : function (format) {
+ return this.localeData().months(this, format);
+ },
+ D : function () {
+ return this.date();
+ },
+ DDD : function () {
+ return this.dayOfYear();
+ },
+ d : function () {
+ return this.day();
+ },
+ dd : function (format) {
+ return this.localeData().weekdaysMin(this, format);
+ },
+ ddd : function (format) {
+ return this.localeData().weekdaysShort(this, format);
+ },
+ dddd : function (format) {
+ return this.localeData().weekdays(this, format);
+ },
+ w : function () {
+ return this.week();
+ },
+ W : function () {
+ return this.isoWeek();
+ },
+ YY : function () {
+ return leftZeroFill(this.year() % 100, 2);
+ },
+ YYYY : function () {
+ return leftZeroFill(this.year(), 4);
+ },
+ YYYYY : function () {
+ return leftZeroFill(this.year(), 5);
+ },
+ YYYYYY : function () {
+ var y = this.year(), sign = y >= 0 ? '+' : '-';
+ return sign + leftZeroFill(Math.abs(y), 6);
+ },
+ gg : function () {
+ return leftZeroFill(this.weekYear() % 100, 2);
+ },
+ gggg : function () {
+ return leftZeroFill(this.weekYear(), 4);
+ },
+ ggggg : function () {
+ return leftZeroFill(this.weekYear(), 5);
+ },
+ GG : function () {
+ return leftZeroFill(this.isoWeekYear() % 100, 2);
+ },
+ GGGG : function () {
+ return leftZeroFill(this.isoWeekYear(), 4);
+ },
+ GGGGG : function () {
+ return leftZeroFill(this.isoWeekYear(), 5);
+ },
+ e : function () {
+ return this.weekday();
+ },
+ E : function () {
+ return this.isoWeekday();
+ },
+ a : function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), true);
+ },
+ A : function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), false);
+ },
+ H : function () {
+ return this.hours();
+ },
+ h : function () {
+ return this.hours() % 12 || 12;
+ },
+ m : function () {
+ return this.minutes();
+ },
+ s : function () {
+ return this.seconds();
+ },
+ S : function () {
+ return toInt(this.milliseconds() / 100);
+ },
+ SS : function () {
+ return leftZeroFill(toInt(this.milliseconds() / 10), 2);
+ },
+ SSS : function () {
+ return leftZeroFill(this.milliseconds(), 3);
+ },
+ SSSS : function () {
+ return leftZeroFill(this.milliseconds(), 3);
+ },
+ Z : function () {
+ var a = this.utcOffset(),
+ b = '+';
+ if (a < 0) {
+ a = -a;
+ b = '-';
}
- } else {
- return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
+ },
+ ZZ : function () {
+ var a = this.utcOffset(),
+ b = '+';
+ if (a < 0) {
+ a = -a;
+ b = '-';
+ }
+ return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
+ },
+ z : function () {
+ return this.zoneAbbr();
+ },
+ zz : function () {
+ return this.zoneName();
+ },
+ x : function () {
+ return this.valueOf();
+ },
+ X : function () {
+ return this.unix();
+ },
+ Q : function () {
+ return this.quarter();
}
},
- toArray : function () {
- var m = this;
- return [
- m.year(),
- m.month(),
- m.date(),
- m.hours(),
- m.minutes(),
- m.seconds(),
- m.milliseconds()
- ];
- },
-
- isValid : function () {
- return isValid(this);
- },
+ deprecations = {},
- isDSTShifted : function () {
- if (this._a) {
- return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
- }
+ lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'],
- return false;
- },
+ updateInProgress = false;
- parsingFlags : function () {
- return extend({}, this._pf);
- },
+ // 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');
+ }
+ }
- invalidAt: function () {
- return this._pf.overflow;
- },
+ function hasOwnProp(a, b) {
+ return hasOwnProperty.call(a, b);
+ }
- utc : function (keepLocalTime) {
- return this.utcOffset(0, keepLocalTime);
- },
+ 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
+ };
+ }
- local : function (keepLocalTime) {
- if (this._isUTC) {
- this.utcOffset(0, keepLocalTime);
- this._isUTC = false;
+ function printMsg(msg) {
+ if (moment.suppressDeprecationWarnings === false &&
+ typeof console !== 'undefined' && console.warn) {
+ console.warn('Deprecation warning: ' + msg);
+ }
+ }
- if (keepLocalTime) {
- this.subtract(this._dateUtcOffset(), 'm');
- }
+ function deprecate(msg, fn) {
+ var firstTime = true;
+ return extend(function () {
+ if (firstTime) {
+ printMsg(msg);
+ firstTime = false;
}
- return this;
- },
+ return fn.apply(this, arguments);
+ }, fn);
+ }
- format : function (inputString) {
- var output = formatMoment(this, inputString || moment.defaultFormat);
- return this.localeData().postformat(output);
- },
+ function deprecateSimple(name, msg) {
+ if (!deprecations[name]) {
+ printMsg(msg);
+ deprecations[name] = true;
+ }
+ }
- add : createAdder(1, 'add'),
+ 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);
+ };
+ }
- subtract : createAdder(-1, 'subtract'),
+ function monthDiff(a, b) {
+ // difference in months
+ var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
+ // b is in (anchor - 1 month, anchor + 1 month)
+ anchor = a.clone().add(wholeMonthDiff, 'months'),
+ anchor2, adjust;
- diff : function (input, units, asFloat) {
- var that = makeAs(input, this),
- zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4,
- anchor, diff, output, daysAdjust;
+ if (b - anchor < 0) {
+ anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor - anchor2);
+ } else {
+ anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor2 - anchor);
+ }
- units = normalizeUnits(units);
+ return -(wholeMonthDiff + adjust);
+ }
- if (units === 'year' || units === 'month' || units === 'quarter') {
- output = monthDiff(this, that);
- if (units === 'quarter') {
- output = output / 3;
- } else 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);
- },
+ 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);
- from : function (time, withoutSuffix) {
- return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
- },
- fromNow : function (withoutSuffix) {
- return this.from(moment(), withoutSuffix);
- },
+ function meridiemFixWrap(locale, hour, meridiem) {
+ var isPm;
- calendar : function (time) {
- // We want to compare the start of today, vs this.
- // Getting start-of-today depends on whether we're locat/utc/offset
- // or not.
- var now = time || moment(),
- sod = makeAs(now, this).startOf('day'),
- diff = this.diff(sod, 'days', true),
- format = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(this.localeData().calendar(format, this, moment(now)));
- },
+ if (meridiem == null) {
+ // nothing to do
+ return hour;
+ }
+ if (locale.meridiemHour != null) {
+ return locale.meridiemHour(hour, meridiem);
+ } else if (locale.isPM != null) {
+ // Fallback
+ isPm = locale.isPM(meridiem);
+ if (isPm && hour < 12) {
+ hour += 12;
+ }
+ if (!isPm && hour === 12) {
+ hour = 0;
+ }
+ return hour;
+ } else {
+ // thie is not supposed to happen
+ return hour;
+ }
+ }
- isLeapYear : function () {
- return isLeapYear(this.year());
- },
+ /************************************
+ Constructors
+ ************************************/
- isDST : function () {
- return (this.utcOffset() > this.clone().month(0).utcOffset() ||
- this.utcOffset() > this.clone().month(5).utcOffset());
- },
+ function Locale() {
+ }
- 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;
- }
- },
+ // Moment prototype object
+ function Moment(config, skipOverflow) {
+ if (skipOverflow !== false) {
+ checkOverflow(config);
+ }
+ copyConfig(this, config);
+ this._d = new Date(+config._d);
+ // Prevent infinite loop in case updateOffset creates new moment
+ // objects.
+ if (updateInProgress === false) {
+ updateInProgress = true;
+ moment.updateOffset(this);
+ updateInProgress = false;
+ }
+ }
- month : makeAccessor('Month', true),
+ // 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;
- 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 */
- }
+ // 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;
- // weeks are a special case
- if (units === 'week') {
- this.weekday(0);
- } else if (units === 'isoWeek') {
- this.isoWeekday(1);
- }
+ this._data = {};
- // quarters are also special
- if (units === 'quarter') {
- this.month(Math.floor(this.month() / 3) * 3);
- }
+ this._locale = moment.localeData();
- return this;
- },
+ this._bubble();
+ }
- endOf: function (units) {
- units = normalizeUnits(units);
- if (units === undefined || units === 'millisecond') {
- return this;
- }
- return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
- },
+ /************************************
+ Helpers
+ ************************************/
- isAfter: function (input, units) {
- var inputMs;
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this > +input;
- } else {
- inputMs = moment.isMoment(input) ? +input : +moment(input);
- return inputMs < +this.clone().startOf(units);
- }
- },
- isBefore: function (input, units) {
- var inputMs;
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this < +input;
- } else {
- inputMs = moment.isMoment(input) ? +input : +moment(input);
- return +this.clone().endOf(units) < inputMs;
+ function extend(a, b) {
+ for (var i in b) {
+ if (hasOwnProp(b, i)) {
+ a[i] = b[i];
}
- },
-
- isBetween: function (from, to, units) {
- return this.isAfter(from, units) && this.isBefore(to, units);
- },
+ }
- isSame: function (input, units) {
- var inputMs;
- units = normalizeUnits(units || 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this === +input;
- } else {
- inputMs = +moment(input);
- return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
- }
- },
+ if (hasOwnProp(b, 'toString')) {
+ a.toString = b.toString;
+ }
- 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;
- }
- ),
+ if (hasOwnProp(b, 'valueOf')) {
+ a.valueOf = b.valueOf;
+ }
- 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;
- }
- ),
+ return a;
+ }
- zone : deprecate(
- 'moment().zone is deprecated, use moment().utcOffset instead. ' +
- 'https://github.com/moment/moment/issues/1779',
- function (input, keepLocalTime) {
- if (input != null) {
- if (typeof input !== 'string') {
- input = -input;
- }
+ function copyConfig(to, from) {
+ var i, prop, val;
- this.utcOffset(input, keepLocalTime);
+ 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;
+ }
- return this;
- } else {
- return -this.utcOffset();
- }
+ if (momentProperties.length > 0) {
+ for (i in momentProperties) {
+ prop = momentProperties[i];
+ val = from[prop];
+ if (typeof val !== 'undefined') {
+ to[prop] = val;
}
- ),
+ }
+ }
- // keepLocalTime = true means only change the timezone, without
- // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
- // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
- // +0200, so we adjust the time as needed, to be valid.
- //
- // Keeping the time actually adds/subtracts (one hour)
- // from the actual represented time. That is why we call updateOffset
- // a second time. In case it wants us to change the offset again
- // _changeInProgress == true case, then we have to adjust, because
- // there is no such time in the given timezone.
- utcOffset : function (input, keepLocalTime) {
- var offset = this._offset || 0,
- localAdjust;
- if (input != null) {
- if (typeof input === 'string') {
- input = utcOffsetFromString(input);
- }
- if (Math.abs(input) < 16) {
- input = input * 60;
- }
- if (!this._isUTC && keepLocalTime) {
- localAdjust = this._dateUtcOffset();
- }
- this._offset = input;
- this._isUTC = true;
- if (localAdjust != null) {
- this.add(localAdjust, 'm');
- }
- if (offset !== input) {
- if (!keepLocalTime || this._changeInProgress) {
- addOrSubtractDurationFromMoment(this,
- moment.duration(input - offset, 'm'), 1, false);
- } else if (!this._changeInProgress) {
- this._changeInProgress = true;
- moment.updateOffset(this, true);
- this._changeInProgress = null;
- }
- }
+ return to;
+ }
- return this;
- } else {
- return this._isUTC ? offset : this._dateUtcOffset();
- }
- },
+ function absRound(number) {
+ if (number < 0) {
+ return Math.ceil(number);
+ } else {
+ return Math.floor(number);
+ }
+ }
- isLocal : function () {
- return !this._isUTC;
- },
+ // 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;
- isUtcOffset : function () {
- return this._isUTC;
- },
+ while (output.length < targetLength) {
+ output = '0' + output;
+ }
+ return (sign ? (forceSign ? '+' : '') : '-') + output;
+ }
+
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
+
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
+ }
- isUtc : function () {
- return this._isUTC && this._offset === 0;
- },
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
- zoneAbbr : function () {
- return this._isUTC ? 'UTC' : '';
- },
+ return res;
+ }
- zoneName : function () {
- return this._isUTC ? 'Coordinated Universal Time' : '';
- },
+ 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;
+ }
- parseZone : function () {
- if (this._tzm) {
- this.utcOffset(this._tzm);
- } else if (typeof this._i === 'string') {
- this.utcOffset(utcOffsetFromString(this._i));
+ return res;
+ }
+
+ // 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;
- },
+ };
+ }
- hasAlignedHourOffset : function (input) {
- if (!input) {
- input = 0;
- }
- else {
- input = moment(input).utcOffset();
- }
+ function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = duration._days,
+ months = duration._months;
+ updateOffset = updateOffset == null ? true : updateOffset;
- return (this.utcOffset() - input) % 60 === 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);
+ }
+ }
- daysInMonth : function () {
- return daysInMonth(this.year(), this.month());
- },
+ // check if is an array
+ function isArray(input) {
+ return Object.prototype.toString.call(input) === '[object Array]';
+ }
- 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');
- },
+ function isDate(input) {
+ return Object.prototype.toString.call(input) === '[object Date]' ||
+ input instanceof Date;
+ }
- quarter : function (input) {
- return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
- },
+ // 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;
+ }
- 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 normalizeUnits(units) {
+ if (units) {
+ var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
+ units = unitAliases[units] || camelFunctions[lowered] || lowered;
+ }
+ return units;
+ }
- isoWeekYear : function (input) {
- var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add((input - year), 'y');
- },
+ function normalizeObjectUnits(inputObject) {
+ var normalizedInput = {},
+ normalizedProp,
+ prop;
- week : function (input) {
- var week = this.localeData().week(this);
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
+ for (prop in inputObject) {
+ if (hasOwnProp(inputObject, prop)) {
+ normalizedProp = normalizeUnits(prop);
+ if (normalizedProp) {
+ normalizedInput[normalizedProp] = inputObject[prop];
+ }
+ }
+ }
- isoWeek : function (input) {
- var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
+ return normalizedInput;
+ }
- weekday : function (input) {
- var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
- return input == null ? weekday : this.add(input - weekday, 'd');
- },
+ function makeList(field) {
+ var count, setter;
- isoWeekday : function (input) {
- // behaves the same as moment#day except
- // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
- // as a setter, sunday should belong to the previous week.
- return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
- },
+ if (field.indexOf('week') === 0) {
+ count = 7;
+ setter = 'day';
+ }
+ else if (field.indexOf('month') === 0) {
+ count = 12;
+ setter = 'month';
+ }
+ else {
+ return;
+ }
- isoWeeksInYear : function () {
- return weeksInYear(this.year(), 1, 4);
- },
+ moment[field] = function (format, index) {
+ var i, getter,
+ method = moment._locale[field],
+ results = [];
- weeksInYear : function () {
- var weekInfo = this.localeData()._week;
- return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
- },
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
- get : function (units) {
- units = normalizeUnits(units);
- return this[units]();
- },
+ getter = function (i) {
+ var m = moment().utc().set(setter, i);
+ return method.call(moment._locale, m, format || '');
+ };
- set : function (units, value) {
- var unit;
- if (typeof units === 'object') {
- for (unit in units) {
- this.set(unit, units[unit]);
- }
+ if (index != null) {
+ return getter(index);
}
else {
- units = normalizeUnits(units);
- if (typeof this[units] === 'function') {
- this[units](value);
+ for (i = 0; i < count; i++) {
+ results.push(getter(i));
}
+ return results;
}
- 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;
+ function toInt(argumentForCoercion) {
+ var coercedNumber = +argumentForCoercion,
+ value = 0;
- if (key === undefined) {
- return this._locale._abbr;
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+ if (coercedNumber >= 0) {
+ value = Math.floor(coercedNumber);
} else {
- newLocaleData = moment.localeData(key);
- if (newLocaleData != null) {
- this._locale = newLocaleData;
- }
- return this;
+ value = Math.ceil(coercedNumber);
}
- },
+ }
- lang : deprecate(
- 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
- function (key) {
- if (key === undefined) {
- return this.localeData();
- } else {
- return this.locale(key);
- }
+ return value;
+ }
+
+ function daysInMonth(year, month) {
+ return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
+ }
+
+ function weeksInYear(year, dow, doy) {
+ return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
+ }
+
+ function daysInYear(year) {
+ return isLeapYear(year) ? 366 : 365;
+ }
+
+ function isLeapYear(year) {
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ }
+
+ function checkOverflow(m) {
+ var overflow;
+ if (m._a && m._pf.overflow === -2) {
+ overflow =
+ m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
+ m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
+ m._a[HOUR] < 0 || m._a[HOUR] > 24 ||
+ (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 ||
+ m._a[SECOND] !== 0 ||
+ m._a[MILLISECOND] !== 0)) ? HOUR :
+ m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
+ m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
+ m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
+ -1;
+
+ if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ overflow = DATE;
}
- ),
- localeData : function () {
- return this._locale;
- },
+ m._pf.overflow = overflow;
+ }
+ }
- _dateUtcOffset : function () {
- // On Firefox.24 Date#getTimezoneOffset returns a floating point.
- // https://github.com/moment/moment/pull/1871
- return -Math.round(this._d.getTimezoneOffset() / 15) * 15;
+ function isValid(m) {
+ if (m._isValid == null) {
+ m._isValid = !isNaN(m._d.getTime()) &&
+ m._pf.overflow < 0 &&
+ !m._pf.empty &&
+ !m._pf.invalidMonth &&
+ !m._pf.nullInput &&
+ !m._pf.invalidFormat &&
+ !m._pf.userInvalidated;
+
+ if (m._strict) {
+ m._isValid = m._isValid &&
+ m._pf.charsLeftOver === 0 &&
+ m._pf.unusedTokens.length === 0 &&
+ m._pf.bigHour === undefined;
+ }
}
+ return m._isValid;
+ }
- });
+ function normalizeLocale(key) {
+ return key ? key.toLowerCase().replace('_', '-') : key;
+ }
- function rawMonthSetter(mom, value) {
- var dayOfMonth;
+ // 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;
- // 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;
+ 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++;
}
-
- dayOfMonth = Math.min(mom.date(),
- daysInMonth(mom.year(), value));
- mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
- return mom;
+ return null;
}
- function rawGetter(mom, unit) {
- return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
+ 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];
}
- function rawSetter(mom, unit, value) {
- if (unit === 'Month') {
- return rawMonthSetter(mom, value);
+ // Return a moment from input, that is local/utc/utcOffset equivalent to
+ // model.
+ function makeAs(input, model) {
+ var res, diff;
+ if (model._isUTC) {
+ res = model.clone();
+ diff = (moment.isMoment(input) || isDate(input) ?
+ +input : +moment(input)) - (+res);
+ // Use low-level api, because this fn is low-level api.
+ res._d.setTime(+res._d + diff);
+ moment.updateOffset(res, false);
+ return res;
} else {
- return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ return moment(input).local();
}
}
- 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);
- }
- };
- }
+ /************************************
+ Locale
+ ************************************/
- 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));
- // 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;
+ extend(Locale.prototype, {
- // add aliased format methods
- moment.fn.toJSON = moment.fn.toISOString;
+ set : function (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (typeof prop === 'function') {
+ this[i] = prop;
+ } else {
+ this['_' + i] = prop;
+ }
+ }
+ // Lenient ordinal parsing accepts just a number in addition to
+ // number + (possibly) stuff coming from _ordinalParseLenient.
+ this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source);
+ },
- // alias isUtc for dev-friendliness
- moment.fn.isUTC = moment.fn.isUtc;
+ _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ months : function (m) {
+ return this._months[m.month()];
+ },
- /************************************
- Duration Prototype
- ************************************/
+ _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ monthsShort : function (m) {
+ return this._monthsShort[m.month()];
+ },
+ monthsParse : function (monthName, format, strict) {
+ var i, mom, regex;
- function daysToYears (days) {
- // 400 years have 146097 days (taking into account leap year rules)
- return days * 400 / 146097;
- }
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ this._longMonthsParse = [];
+ this._shortMonthsParse = [];
+ }
- function yearsToDays (years) {
- // years * 365 + absRound(years / 4) -
- // absRound(years / 100) + absRound(years / 400);
- return years * 146097 / 400;
- }
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = moment.utc([2000, i]);
+ if (strict && !this._longMonthsParse[i]) {
+ this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
+ this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
+ }
+ if (!strict && !this._monthsParse[i]) {
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (!strict && this._monthsParse[i].test(monthName)) {
+ return i;
+ }
+ }
+ },
- extend(moment.duration.fn = Duration.prototype, {
+ _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdays : function (m) {
+ return this._weekdays[m.day()];
+ },
- _bubble : function () {
- var milliseconds = this._milliseconds,
- days = this._days,
- months = this._months,
- data = this._data,
- seconds, minutes, hours, years = 0;
+ _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysShort : function (m) {
+ return this._weekdaysShort[m.day()];
+ },
- // The following code bubbles up values, see the tests for
- // examples of what that means.
- data.milliseconds = milliseconds % 1000;
+ _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ weekdaysMin : function (m) {
+ return this._weekdaysMin[m.day()];
+ },
- seconds = absRound(milliseconds / 1000);
- data.seconds = seconds % 60;
+ weekdaysParse : function (weekdayName) {
+ var i, mom, regex;
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+ if (!this._weekdaysParse[i]) {
+ mom = moment([2000, 1]).day(i);
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._weekdaysParse[i].test(weekdayName)) {
+ return i;
+ }
+ }
+ },
- minutes = absRound(seconds / 60);
- data.minutes = minutes % 60;
+ _longDateFormat : {
+ LTS : 'h:mm:ss A',
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY LT',
+ LLLL : 'dddd, MMMM D, YYYY LT'
+ },
+ longDateFormat : function (key) {
+ var output = this._longDateFormat[key];
+ if (!output && this._longDateFormat[key.toUpperCase()]) {
+ output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+ this._longDateFormat[key] = output;
+ }
+ return output;
+ },
- hours = absRound(minutes / 60);
- data.hours = hours % 24;
+ 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');
+ },
- days += absRound(hours / 24);
+ _meridiemParse : /[ap]\.?m?\.?/i,
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
+ } else {
+ return isLower ? 'am' : 'AM';
+ }
+ },
- // 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;
+ _calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ calendar : function (key, mom, now) {
+ var output = this._calendar[key];
+ return typeof output === 'function' ? output.apply(mom, [now]) : output;
+ },
- // 12 months -> 1 year
- years += absRound(months / 12);
- months %= 12;
+ _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'
+ },
- data.days = days;
- data.months = months;
- data.years = years;
+ relativeTime : function (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (typeof output === 'function') ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
},
- abs : function () {
- this._milliseconds = Math.abs(this._milliseconds);
- this._days = Math.abs(this._days);
- this._months = Math.abs(this._months);
+ pastFuture : function (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
+ },
- 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);
+ ordinal : function (number) {
+ return this._ordinal.replace('%d', number);
+ },
+ _ordinal : '%d',
+ _ordinalParse : /\d{1,2}/,
- return this;
+ preparse : function (string) {
+ return string;
},
- weeks : function () {
- return absRound(this.days() / 7);
+ postformat : function (string) {
+ return string;
},
- valueOf : function () {
- return this._milliseconds +
- this._days * 864e5 +
- (this._months % 12) * 2592e6 +
- toInt(this._months / 12) * 31536e6;
+ week : function (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
},
- humanize : function (withSuffix) {
- var output = relativeTime(this, !withSuffix, this.localeData());
+ _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.
+ },
- if (withSuffix) {
- output = this.localeData().pastFuture(+this, output);
- }
+ firstDayOfWeek : function () {
+ return this._week.dow;
+ },
- return this.localeData().postformat(output);
+ firstDayOfYear : function () {
+ return this._week.doy;
},
- add : function (input, val) {
- // supports only 2.0-style add(1, 's') or add(moment)
- var dur = moment.duration(input, val);
+ _invalidDate: 'Invalid date',
+ invalidDate: function () {
+ return this._invalidDate;
+ }
+ });
- this._milliseconds += dur._milliseconds;
- this._days += dur._days;
- this._months += dur._months;
+ /************************************
+ Formatting
+ ************************************/
- this._bubble();
- return this;
- },
+ function removeFormattingTokens(input) {
+ if (input.match(/\[[\s\S]/)) {
+ return input.replace(/^\[|\]$/g, '');
+ }
+ return input.replace(/\\/g, '');
+ }
- subtract : function (input, val) {
- var dur = moment.duration(input, val);
+ function makeFormatFunction(format) {
+ var array = format.match(formattingTokens), i, length;
- this._milliseconds -= dur._milliseconds;
- this._days -= dur._days;
- this._months -= dur._months;
+ for (i = 0, length = array.length; i < length; i++) {
+ if (formatTokenFunctions[array[i]]) {
+ array[i] = formatTokenFunctions[array[i]];
+ } else {
+ array[i] = removeFormattingTokens(array[i]);
+ }
+ }
- this._bubble();
+ return function (mom) {
+ var output = '';
+ for (i = 0; i < length; i++) {
+ output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
+ }
+ return output;
+ };
+ }
- return this;
- },
+ // format date using native date object
+ function formatMoment(m, format) {
+ if (!m.isValid()) {
+ return m.localeData().invalidDate();
+ }
- get : function (units) {
- units = normalizeUnits(units);
- return this[units.toLowerCase() + 's']();
- },
+ format = expandFormat(format, m.localeData());
- as : function (units) {
- var days, months;
- units = normalizeUnits(units);
+ if (!formatFunctions[format]) {
+ formatFunctions[format] = makeFormatFunction(format);
+ }
- if (units === 'month' || units === 'year') {
- days = this._days + this._milliseconds / 864e5;
- months = this._months + daysToYears(days) * 12;
- return units === 'month' ? months : months / 12;
- } else {
- // handle milliseconds separately because of floating point math errors (issue #1867)
- days = this._days + Math.round(yearsToDays(this._months / 12));
- switch (units) {
- case 'week': return days / 7 + this._milliseconds / 6048e5;
- case 'day': return days + this._milliseconds / 864e5;
- case 'hour': return days * 24 + this._milliseconds / 36e5;
- case 'minute': return days * 24 * 60 + this._milliseconds / 6e4;
- case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000;
- // Math.floor prevents floating point math errors here
- case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds;
- default: throw new Error('Unknown unit ' + units);
- }
- }
- },
+ return formatFunctions[format](m);
+ }
- lang : moment.fn.lang,
- locale : moment.fn.locale,
+ function expandFormat(format, locale) {
+ var i = 5;
- toIsoString : deprecate(
- 'toIsoString() is deprecated. Please use toISOString() instead ' +
- '(notice the capitals)',
- function () {
- return this.toISOString();
- }
- ),
+ function replaceLongDateFormatTokens(input) {
+ return locale.longDateFormat(input) || input;
+ }
- 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);
+ localFormattingTokens.lastIndex = 0;
+ while (i >= 0 && localFormattingTokens.test(format)) {
+ format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
+ localFormattingTokens.lastIndex = 0;
+ i -= 1;
+ }
- if (!this.asSeconds()) {
- // this is the same as C#'s (Noda) and python (isodate)...
- // but not other JS (goog.date)
- return 'P0D';
- }
+ return format;
+ }
- 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' : '');
- },
- localeData : function () {
- return this._locale;
- },
+ /************************************
+ Parsing
+ ************************************/
- toJSON : function () {
- return this.toISOString();
+
+ // get the regex to find the next token
+ function getParseRegexForToken(token, config) {
+ var a, strict = config._strict;
+ switch (token) {
+ case 'Q':
+ return parseTokenOneDigit;
+ case 'DDDD':
+ return parseTokenThreeDigits;
+ case 'YYYY':
+ case 'GGGG':
+ case 'gggg':
+ return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
+ case 'Y':
+ case 'G':
+ case 'g':
+ return parseTokenSignedNumber;
+ case 'YYYYYY':
+ case 'YYYYY':
+ case 'GGGGG':
+ case 'ggggg':
+ return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
+ case 'S':
+ if (strict) {
+ return parseTokenOneDigit;
+ }
+ /* falls through */
+ case 'SS':
+ if (strict) {
+ return parseTokenTwoDigits;
+ }
+ /* falls through */
+ case 'SSS':
+ if (strict) {
+ return parseTokenThreeDigits;
+ }
+ /* falls through */
+ case 'DDD':
+ return parseTokenOneToThreeDigits;
+ case 'MMM':
+ case 'MMMM':
+ case 'dd':
+ case 'ddd':
+ case 'dddd':
+ return parseTokenWord;
+ case 'a':
+ case 'A':
+ return config._locale._meridiemParse;
+ case 'x':
+ return parseTokenOffsetMs;
+ case 'X':
+ return parseTokenTimestampMs;
+ case 'Z':
+ case 'ZZ':
+ return parseTokenTimezone;
+ case 'T':
+ return parseTokenT;
+ case 'SSSS':
+ return parseTokenDigits;
+ case 'MM':
+ case 'DD':
+ case 'YY':
+ case 'GG':
+ case 'gg':
+ case 'HH':
+ case 'hh':
+ case 'mm':
+ case 'ss':
+ case 'ww':
+ case 'WW':
+ return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
+ case 'M':
+ case 'D':
+ case 'd':
+ case 'H':
+ case 'h':
+ case 'm':
+ case 's':
+ case 'w':
+ case 'W':
+ case 'e':
+ case 'E':
+ return parseTokenOneOrTwoDigits;
+ case 'Do':
+ return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient;
+ default :
+ a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
+ return a;
}
- });
+ }
- moment.duration.fn.toString = moment.duration.fn.toISOString;
+ function utcOffsetFromString(string) {
+ string = string || '';
+ var possibleTzMatches = (string.match(parseTokenTimezone) || []),
+ tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
+ parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
+ minutes = +(parts[1] * 60) + toInt(parts[2]);
- function makeDurationGetter(name) {
- moment.duration.fn[name] = function () {
- return this._data[name];
- };
+ return parts[0] === '+' ? minutes : -minutes;
}
- for (i in unitMillisecondFactors) {
- if (hasOwnProp(unitMillisecondFactors, i)) {
- makeDurationGetter(i.toLowerCase());
+ // function to convert string input to date
+ function addTimeToArrayFromToken(token, input, config) {
+ var a, datePartArray = config._a;
+
+ switch (token) {
+ // QUARTER
+ case 'Q':
+ if (input != null) {
+ datePartArray[MONTH] = (toInt(input) - 1) * 3;
+ }
+ break;
+ // MONTH
+ case 'M' : // fall through to MM
+ case 'MM' :
+ if (input != null) {
+ datePartArray[MONTH] = toInt(input) - 1;
+ }
+ break;
+ case 'MMM' : // fall through to MMMM
+ case 'MMMM' :
+ a = config._locale.monthsParse(input, token, config._strict);
+ // if we didn't find a month name, mark the date as invalid.
+ if (a != null) {
+ datePartArray[MONTH] = a;
+ } else {
+ config._pf.invalidMonth = input;
+ }
+ break;
+ // DAY OF MONTH
+ case 'D' : // fall through to DD
+ case 'DD' :
+ if (input != null) {
+ datePartArray[DATE] = toInt(input);
+ }
+ break;
+ case 'Do' :
+ if (input != null) {
+ datePartArray[DATE] = toInt(parseInt(
+ input.match(/\d{1,2}/)[0], 10));
+ }
+ break;
+ // DAY OF YEAR
+ case 'DDD' : // fall through to DDDD
+ case 'DDDD' :
+ if (input != null) {
+ config._dayOfYear = toInt(input);
+ }
+
+ break;
+ // YEAR
+ case 'YY' :
+ datePartArray[YEAR] = moment.parseTwoDigitYear(input);
+ break;
+ case 'YYYY' :
+ case 'YYYYY' :
+ case 'YYYYYY' :
+ datePartArray[YEAR] = toInt(input);
+ break;
+ // AM / PM
+ case 'a' : // fall through to A
+ case 'A' :
+ config._meridiem = input;
+ // config._isPm = config._locale.isPM(input);
+ break;
+ // HOUR
+ case 'h' : // fall through to hh
+ case 'hh' :
+ config._pf.bigHour = true;
+ /* falls through */
+ case 'H' : // fall through to HH
+ case 'HH' :
+ datePartArray[HOUR] = toInt(input);
+ break;
+ // MINUTE
+ case 'm' : // fall through to mm
+ case 'mm' :
+ datePartArray[MINUTE] = toInt(input);
+ break;
+ // SECOND
+ case 's' : // fall through to ss
+ case 'ss' :
+ datePartArray[SECOND] = toInt(input);
+ break;
+ // MILLISECOND
+ case 'S' :
+ case 'SS' :
+ case 'SSS' :
+ case 'SSSS' :
+ datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
+ break;
+ // UNIX OFFSET (MILLISECONDS)
+ case 'x':
+ config._d = new Date(toInt(input));
+ break;
+ // UNIX TIMESTAMP WITH MS
+ case 'X':
+ config._d = new Date(parseFloat(input) * 1000);
+ break;
+ // TIMEZONE
+ case 'Z' : // fall through to ZZ
+ case 'ZZ' :
+ config._useUTC = true;
+ config._tzm = utcOffsetFromString(input);
+ break;
+ // WEEKDAY - human
+ case 'dd':
+ case 'ddd':
+ case 'dddd':
+ a = config._locale.weekdaysParse(input);
+ // if we didn't get a weekday name, mark the date as invalid
+ if (a != null) {
+ config._w = config._w || {};
+ config._w['d'] = a;
+ } else {
+ config._pf.invalidWeekday = input;
+ }
+ break;
+ // WEEK, WEEK DAY - numeric
+ case 'w':
+ case 'ww':
+ case 'W':
+ case 'WW':
+ case 'd':
+ case 'e':
+ case 'E':
+ token = token.substr(0, 1);
+ /* falls through */
+ case 'gggg':
+ case 'GGGG':
+ case 'GGGGG':
+ token = token.substr(0, 2);
+ if (input) {
+ config._w = config._w || {};
+ config._w[token] = toInt(input);
+ }
+ break;
+ case 'gg':
+ case 'GG':
+ config._w = config._w || {};
+ config._w[token] = moment.parseTwoDigitYear(input);
}
}
- moment.duration.fn.asMilliseconds = function () {
- return this.as('ms');
- };
- moment.duration.fn.asSeconds = function () {
- return this.as('s');
- };
- moment.duration.fn.asMinutes = function () {
- return this.as('m');
- };
- moment.duration.fn.asHours = function () {
- return this.as('h');
- };
- moment.duration.fn.asDays = function () {
- return this.as('d');
- };
- moment.duration.fn.asWeeks = function () {
- return this.as('weeks');
- };
- moment.duration.fn.asMonths = function () {
- return this.as('M');
- };
- moment.duration.fn.asYears = function () {
- return this.as('y');
- };
+ function dayOfYearFromWeekInfo(config) {
+ var w, weekYear, week, weekday, dow, doy, temp;
- /************************************
- Default Locale
- ************************************/
+ w = config._w;
+ if (w.GG != null || w.W != null || w.E != null) {
+ dow = 1;
+ doy = 4;
+ // 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;
- // Set default locale, other locale will inherit from English.
- moment.locale('en', {
- ordinalParse: /\d{1,2}(th|st|nd|rd)/,
- ordinal : function (number) {
- var b = number % 10,
- output = (toInt(number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
+ weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
+ week = dfl(w.w, 1);
+
+ if (w.d != null) {
+ // weekday -- low day numbers are considered next week
+ weekday = w.d;
+ if (weekday < dow) {
+ ++week;
+ }
+ } else if (w.e != null) {
+ // local weekday -- counting starts from begining of week
+ weekday = w.e + dow;
+ } else {
+ // default to begining of week
+ weekday = dow;
+ }
}
- });
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
- /* EMBED_LOCALES */
+ config._a[YEAR] = temp.year;
+ config._dayOfYear = temp.dayOfYear;
+ }
- /************************************
- Exposing Moment
- ************************************/
+ // 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;
- function makeGlobal(shouldDeprecate) {
- /*global ender:false */
- if (typeof ender !== 'undefined') {
+ if (config._d) {
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;
- }
+ currentDate = currentDateArray(config);
- return moment;
- }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- makeGlobal(true);
- } else {
- makeGlobal();
- }
- }).call(this);
-
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module)))
+ //compute day of the year from weeks and weekdays
+ if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
+ dayOfYearFromWeekInfo(config);
+ }
-/***/ },
-/* 59 */
-/***/ function(module, exports, __webpack_require__) {
+ //if the day of the year is set, figure out what it is
+ if (config._dayOfYear) {
+ yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
- var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20
- * http://eightmedia.github.io/hammer.js
- *
- * Copyright (c) 2014 Jorik Tangelder ;
- * Licensed under the MIT license */
+ if (config._dayOfYear > daysInYear(yearToUse)) {
+ config._pf._overflowDayOfYear = true;
+ }
- (function(window, undefined) {
- 'use strict';
+ date = makeUTCDate(yearToUse, 0, config._dayOfYear);
+ config._a[MONTH] = date.getUTCMonth();
+ config._a[DATE] = date.getUTCDate();
+ }
- /**
- * @main
- * @module hammer
- *
- * @class Hammer
- * @static
- */
+ // Default to current date.
+ // * if no year, month, day of month are given, default to today
+ // * if day of month is given, default month and year
+ // * if month is given, default only year
+ // * if year is given, don't default anything
+ for (i = 0; i < 3 && config._a[i] == null; ++i) {
+ config._a[i] = input[i] = currentDate[i];
+ }
- /**
- * Hammer, 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 || {});
- };
+ // 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];
+ }
- /**
- * 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 24:00:00.000
+ if (config._a[HOUR] === 24 &&
+ config._a[MINUTE] === 0 &&
+ config._a[SECOND] === 0 &&
+ config._a[MILLISECOND] === 0) {
+ config._nextDay = true;
+ config._a[HOUR] = 0;
+ }
- /**
- * 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',
+ config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
+ // Apply timezone offset from input. The actual utcOffset can be changed
+ // with parseZone.
+ if (config._tzm != null) {
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+ }
- /**
- * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming).
- * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event.
- * @property defaults.behavior.touchAction
- * @type {String}
- * @default: 'pan-y'
- */
- touchAction: 'pan-y',
+ if (config._nextDay) {
+ config._a[HOUR] = 24;
+ }
+ }
- /**
- * 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',
+ function dateFromObject(config) {
+ var normalizedInput;
- /**
- * Specifies whether zooming is enabled. Used by IE10>
- * @property defaults.behavior.contentZooming
- * @type {String}
- * @default 'none'
- */
- contentZooming: 'none',
+ if (config._d) {
+ return;
+ }
- /**
- * 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',
+ normalizedInput = normalizeObjectUnits(config._i);
+ config._a = [
+ normalizedInput.year,
+ normalizedInput.month,
+ normalizedInput.day || normalizedInput.date,
+ normalizedInput.hour,
+ normalizedInput.minute,
+ normalizedInput.second,
+ normalizedInput.millisecond
+ ];
- /**
- * 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)'
+ dateFromConfig(config);
}
- };
-
- /**
- * hammer document where the base events are added at
- * @property DOCUMENT
- * @type {HTMLElement}
- * @default window.document
- */
- Hammer.DOCUMENT = document;
- /**
- * detect support for pointer events
- * @property HAS_POINTEREVENTS
- * @type {Boolean}
- */
- Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled;
+ 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()];
+ }
+ }
- /**
- * detect support for touch events
- * @property HAS_TOUCHEVENTS
- * @type {Boolean}
- */
- Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window);
+ // date from string and format string
+ function makeDateFromStringAndFormat(config) {
+ if (config._f === moment.ISO_8601) {
+ parseISO(config);
+ return;
+ }
- /**
- * detect mobile browsers
- * @property IS_MOBILE
- * @type {Boolean}
- */
- Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent);
+ config._a = [];
+ config._pf.empty = true;
- /**
- * 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;
+ // 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;
- /**
- * interval in which Hammer recalculates current velocity/direction/angle in ms
- * @property CALCULATE_INTERVAL
- * @type {Number}
- * @default 25
- */
- Hammer.CALCULATE_INTERVAL = 25;
+ tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
- /**
- * 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 = {};
+ 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);
+ }
+ }
- /**
- * 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';
+ // add remaining unparsed input length to the string
+ config._pf.charsLeftOver = stringLength - totalParsedInputLength;
+ if (string.length > 0) {
+ config._pf.unusedInput.push(string);
+ }
- /**
- * 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';
+ // clear _12h flag if hour is <= 12
+ if (config._pf.bigHour === true && config._a[HOUR] <= 12) {
+ config._pf.bigHour = undefined;
+ }
+ // handle meridiem
+ config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR],
+ config._meridiem);
+ dateFromConfig(config);
+ checkOverflow(config);
+ }
- /**
- * 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';
+ function unescapeFormat(s) {
+ return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
+ return p1 || p2 || p3 || p4;
+ });
+ }
- /**
- * if the window events are set...
- * @property READY
- * @writeOnce
- * @type {Boolean}
- * @default false
- */
- Hammer.READY = false;
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function regexpEscape(s) {
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ }
- /**
- * plugins namespace
- * @property plugins
- * @type {Object}
- */
- Hammer.plugins = Hammer.plugins || {};
+ // date from string and array of format strings
+ function makeDateFromStringAndArray(config) {
+ var tempConfig,
+ bestMoment,
- /**
- * gestures namespace
- * see `/gestures` for the definitions
- * @property gestures
- * @type {Object}
- */
- Hammer.gestures = Hammer.gestures || {};
+ scoreToBeat,
+ i,
+ currentScore;
- /**
- * setup events to detect gestures on the document
- * this function is called when creating an new instance
- * @private
- */
- function setup() {
- if(Hammer.READY) {
- return;
- }
+ if (config._f.length === 0) {
+ config._pf.invalidFormat = true;
+ config._d = new Date(NaN);
+ return;
+ }
- // find what eventtypes we add listeners to
- Event.determineEventTypes();
+ 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);
- // Register all gestures inside Hammer.gestures
- Utils.each(Hammer.gestures, function(gesture) {
- Detection.register(gesture);
- });
+ if (!isValid(tempConfig)) {
+ continue;
+ }
- // Add touch events on the document
- Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect);
- Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect);
+ // if there is any input that was not parsed add a penalty for that format
+ currentScore += tempConfig._pf.charsLeftOver;
- // Hammer is ready...!
- Hammer.READY = true;
- }
+ //or tokens
+ currentScore += tempConfig._pf.unusedTokens.length * 10;
- /**
- * @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;
+ tempConfig._pf.score = currentScore;
+
+ if (scoreToBeat == null || currentScore < scoreToBeat) {
+ scoreToBeat = currentScore;
+ bestMoment = tempConfig;
}
- 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);
- },
- /**
- * 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);
- },
+ extend(config, bestMoment || tempConfig);
+ }
- /**
- * 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;
+ // date from iso format
+ function parseISO(config) {
+ var i, l,
+ string = config._i,
+ match = isoRegex.exec(string);
- // 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;
+ 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;
}
}
- // objects
- } else {
- for(i in obj) {
- if(obj.hasOwnProperty(i) &&
- iterator.call(context, obj[i], i, obj) === false) {
- return;
+ 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;
}
- },
+ }
- /**
- * 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;
- },
+ // date from iso format or fallback
+ function makeDateFromString(config) {
+ parseISO(config);
+ if (config._isValid === false) {
+ delete config._isValid;
+ moment.createFromInputFallback(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;
+ function map(arr, fn) {
+ var res = [], i;
+ for (i = 0; i < arr.length; ++i) {
+ res.push(fn(arr[i], i));
+ }
+ return res;
+ }
+
+ 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 {
- for(var i = 0, len = src.length; i < len; i++) {
- if(src[i] === find) {
- return i;
- }
- }
- return false;
+ moment.createFromInputFallback(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);
- },
+ 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);
- /**
- * 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;
+ //the date constructor doesn't accept years < 1970
+ if (y < 1970) {
+ date.setFullYear(y);
+ }
+ return date;
+ }
+
+ function makeUTCDate(y) {
+ var date = new Date(Date.UTC.apply(null, arguments));
+ if (y < 1970) {
+ date.setUTCFullYear(y);
+ }
+ return date;
+ }
+
+ 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;
+ }
}
- node = node.parentNode;
}
- return false;
- },
+ return input;
+ }
- /**
- * 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;
+ /************************************
+ Relative Time
+ ************************************/
- // 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
- };
+
+ // 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);
+ }
+
+ 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')),
+
+ 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;
}
- Utils.each(touches, function(touch) {
- pageX.push(touch.pageX);
- pageY.push(touch.pageY);
- clientX.push(touch.clientX);
- clientY.push(touch.clientY);
- });
+ if (daysToDayOfWeek < end - 7) {
+ daysToDayOfWeek += 7;
+ }
+ adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
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
+ week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+ year: adjustedMoment.year()
};
- },
+ }
+
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
+ var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
+
+ 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;
- /**
- * 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
+ year: dayOfYear > 0 ? year : year - 1,
+ dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
};
- },
+ }
- /**
- * 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;
+ /************************************
+ Top Level Functions
+ ************************************/
- return Math.atan2(y, x) * 180 / Math.PI;
- },
+ function makeMoment(config) {
+ var input = config._i,
+ format = config._f,
+ res;
- /**
- * 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);
+ config._locale = config._locale || moment.localeData(config._l);
- if(x >= y) {
- return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ if (input === null || (format === undefined && input === '')) {
+ return moment.invalid({nullInput: true});
}
- 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;
+ if (typeof input === 'string') {
+ config._i = input = config._locale.preparse(input);
+ }
- return Math.sqrt((x * x) + (y * y));
- },
+ if (moment.isMoment(input)) {
+ return new Moment(input, true);
+ } else if (format) {
+ if (isArray(format)) {
+ makeDateFromStringAndArray(config);
+ } else {
+ makeDateFromStringAndFormat(config);
+ }
+ } else {
+ makeDateFromInput(config);
+ }
- /**
- * 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]);
+ res = new Moment(config);
+ if (res._nextDay) {
+ // Adding is smart enough around DST
+ res.add(1, 'd');
+ res._nextDay = undefined;
}
- 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]);
+ return res;
+ }
+
+ moment = function (input, format, locale, strict) {
+ var c;
+
+ if (typeof(locale) === 'boolean') {
+ strict = locale;
+ locale = undefined;
}
- return 0;
- },
+ // 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();
- /**
- * 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 makeMoment(c);
+ };
- /**
- * 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);
+ moment.suppressDeprecationWarnings = false;
- 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);
- }
+ moment.createFromInputFallback = deprecate(
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+ }
+ );
- // test the style
- if(p in element.style) {
- element.style[p] = (toggle == null || toggle) && value || '';
- break;
+ // 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;
+ }
- /**
- * 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;
- }
+ moment.min = function () {
+ var args = [].slice.call(arguments, 0);
- // set the css properties
- Utils.each(props, function(value, prop) {
- Utils.setPrefixedCss(element, prop, value, toggle);
- });
+ return pickBy('isBefore', args);
+ };
- var falseFn = toggle && function() {
- return false;
- };
+ moment.max = function () {
+ var args = [].slice.call(arguments, 0);
- // also the disable onselectstart
- if(props.userSelect == 'none') {
- element.onselectstart = falseFn;
- }
- // and disable ondragstart
- if(props.userDrag == 'none') {
- element.ondragstart = falseFn;
+ return pickBy('isAfter', args);
+ };
+
+ // creating with utc
+ moment.utc = 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._useUTC = true;
+ c._isUTC = true;
+ c._l = locale;
+ c._i = input;
+ c._f = format;
+ c._strict = strict;
+ c._pf = defaultParsingFlags();
- /**
- * 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();
- });
- }
- };
+ return makeMoment(c).utc();
+ };
+ // creating with unix timestamp (in seconds)
+ moment.unix = function (input) {
+ return moment(input * 1000);
+ };
- /**
- * @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,
+ // duration
+ moment.duration = function (input, key) {
+ var duration = input,
+ // matching against regexp is expensive, do it on demand
+ match = null,
+ sign,
+ ret,
+ parseIso,
+ diffRes;
- /**
- * if EVENT_START has been fired
- * @property started
- * @private
- * @type {Boolean}
- */
- started: false,
+ if (moment.isDuration(input)) {
+ duration = {
+ ms: input._milliseconds,
+ d: input._days,
+ M: input._months
+ };
+ } else if (typeof input === 'number') {
+ duration = {};
+ if (key) {
+ duration[key] = input;
+ } else {
+ duration.milliseconds = input;
+ }
+ } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ duration = {
+ y: 0,
+ d: toInt(match[DATE]) * sign,
+ h: toInt(match[HOUR]) * sign,
+ m: toInt(match[MINUTE]) * sign,
+ s: toInt(match[SECOND]) * sign,
+ ms: toInt(match[MILLISECOND]) * sign
+ };
+ } else if (!!(match = isoDurationRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ parseIso = function (inp) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var res = inp && parseFloat(inp.replace(',', '.'));
+ // apply sign while we're at it
+ return (isNaN(res) ? 0 : res) * sign;
+ };
+ duration = {
+ y: parseIso(match[2]),
+ M: parseIso(match[3]),
+ d: parseIso(match[4]),
+ h: parseIso(match[5]),
+ m: parseIso(match[6]),
+ s: parseIso(match[7]),
+ w: parseIso(match[8])
+ };
+ } else if (duration == null) {// checks for null or undefined
+ duration = {};
+ } else if (typeof duration === 'object' &&
+ ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(moment(duration.from), moment(duration.to));
- /**
- * when the mouse is hold down, this is true
- * @property should_detect
- * @private
- * @type {Boolean}
- */
- shouldDetect: false,
+ duration = {};
+ duration.ms = diffRes.milliseconds;
+ duration.M = diffRes.months;
+ }
- /**
- * 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);
- });
- },
+ ret = new Duration(duration);
- /**
- * 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);
- });
- },
+ if (moment.isDuration(input) && hasOwnProp(input, '_locale')) {
+ ret._locale = input._locale;
+ }
- /**
- * 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;
+ return ret;
+ };
- var onTouchHandler = function onTouchHandler(ev) {
- var srcType = ev.type.toLowerCase(),
- isPointer = Hammer.HAS_POINTEREVENTS,
- isMouse = Utils.inStr(srcType, 'mouse'),
- triggerType;
+ // version number
+ moment.version = VERSION;
- // 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;
+ // default format
+ moment.defaultFormat = isoFormat;
- // 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;
- }
+ // constant that refers to the ISO standard
+ moment.ISO_8601 = function () {};
- // update the pointer event before entering the detection
- if(isPointer && eventType != EVENT_END) {
- PointerEvent.updatePointer(eventType, ev);
- }
+ // Plugins that add properties should also add the key here (null value),
+ // so we can properly clone ourselves.
+ moment.momentProperties = momentProperties;
- // we are in a touch/down state, so allowed detection of gestures
- if(self.shouldDetect) {
- triggerType = self.doDetect.call(self, ev, eventType, element, handler);
- }
+ // 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 () {};
- // ...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
+ // 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;
+ };
+
+ 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(isPointer && eventType == EVENT_END) {
- PointerEvent.updatePointer(eventType, ev);
+ if (data) {
+ moment.duration._locale = moment._locale = data;
}
- };
+ }
- this.on(element, EVENT_TYPES[eventType], onTouchHandler);
- return onTouchHandler;
- },
+ return moment._locale._abbr;
+ };
- /**
- * 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;
+ moment.defineLocale = function (name, values) {
+ if (values !== null) {
+ values.abbr = name;
+ if (!locales[name]) {
+ locales[name] = new Locale();
+ }
+ locales[name].set(values);
- // 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;
+ // backwards compat for now: also set the locale
+ moment.locale(name);
- // keep track of how many touches have been removed
- changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1);
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
}
+ };
- // 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;
+ moment.langData = deprecate(
+ 'moment.langData is deprecated. Use moment.localeData instead.',
+ function (key) {
+ return moment.localeData(key);
}
+ );
- // detection has been started, we keep track of this, see above
- this.started = true;
+ // returns locale data
+ moment.localeData = function (key) {
+ var locale;
- // generate some event data, some basic information
- var evData = this.collectEventData(element, triggerType, touchList, ev);
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
- // trigger the triggerType event before the change (TOUCH, RELEASE) events
- // but the END event should be at last
- if(eventType != EVENT_END) {
- handler.call(Detection, evData);
+ if (!key) {
+ return moment._locale;
}
- // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed
- if(triggerChange) {
- evData.changedLength = changedLength;
- evData.eventType = triggerChange;
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
+ }
+ key = [key];
+ }
- handler.call(Detection, evData);
+ return chooseLocale(key);
+ };
- evData.eventType = triggerType;
- delete evData.changedLength;
- }
+ // compare moment object
+ moment.isMoment = function (obj) {
+ return obj instanceof Moment ||
+ (obj != null && hasOwnProp(obj, '_isAMomentObject'));
+ };
- // trigger the END event
- if(triggerType == EVENT_END) {
- handler.call(Detection, evData);
+ // for typechecking Duration objects
+ moment.isDuration = function (obj) {
+ return obj instanceof Duration;
+ };
- // ...and we are done with the detection
- // so reset everything to start each detection totally fresh
- this.started = false;
- }
+ for (i = lists.length - 1; i >= 0; --i) {
+ makeList(lists[i]);
+ }
- return triggerType;
- },
+ moment.normalizeUnits = function (units) {
+ return normalizeUnits(units);
+ };
- /**
- * 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'
- ];
+ moment.invalid = function (flags) {
+ var m = moment.utc(NaN);
+ if (flags != null) {
+ extend(m._pf, flags);
+ }
+ else {
+ m._pf.userInvalidated = true;
}
- EVENT_TYPES[EVENT_START] = types[0];
- EVENT_TYPES[EVENT_MOVE] = types[1];
- EVENT_TYPES[EVENT_END] = types[2];
- return EVENT_TYPES;
- },
+ return m;
+ };
- /**
- * 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.parseZone = function () {
+ return moment.apply(null, arguments).parseZone();
+ };
- // get the touchlist
- if(ev.touches) {
- if(eventType == EVENT_MOVE) {
- return ev.touches;
- }
+ moment.parseTwoDigitYear = function (input) {
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+ };
- var identifiers = [];
- var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches));
- var touchList = [];
+ moment.isDate = isDate;
- Utils.each(concat, function(touch) {
- if(Utils.inArray(identifiers, touch.identifier) === false) {
- touchList.push(touch);
- }
- identifiers.push(touch.identifier);
- });
+ /************************************
+ Moment Prototype
+ ************************************/
- return touchList;
- }
- // make fake touchList from mouse position
- ev.identifier = 1;
- return [ev];
- },
+ extend(moment.fn = Moment.prototype, {
+
+ clone : function () {
+ return moment(this);
+ },
- /**
- * 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;
- }
+ valueOf : function () {
+ return +this._d - ((this._offset || 0) * 60000);
+ },
- return {
- center: Utils.getCenter(touches),
- timeStamp: Date.now(),
- target: ev.target,
- touches: touches,
- eventType: eventType,
- pointerType: pointerType,
- srcEvent: ev,
+ unix : function () {
+ return Math.floor(+this / 1000);
+ },
- /**
- * 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();
- },
+ toString : function () {
+ return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+ },
- /**
- * stop bubbling the event up to its parents
- */
- stopPropagation: function() {
- this.srcEvent.stopPropagation();
- },
+ toDate : function () {
+ return this._offset ? new Date(+this) : this._d;
+ },
- /**
- * immediately stop gesture detection
- * might be useful after a swipe was detected
- * @return {*}
- */
- stopDetect: function() {
- return Detection.stopDetect();
+ toISOString : function () {
+ var m = moment(this).utc();
+ if (0 < m.year() && m.year() <= 9999) {
+ if ('function' === typeof Date.prototype.toISOString) {
+ // native implementation is ~50x faster, use it when we can
+ return this.toDate().toISOString();
+ } else {
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ } else {
+ return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
}
- };
- }
- };
-
+ },
- /**
- * @module hammer
- *
- * @class PointerEvent
- * @static
- */
- var PointerEvent = Hammer.PointerEvent = {
- /**
- * holds all pointers, by `identifier`
- * @property pointers
- * @type {Object}
- */
- pointers: {},
+ toArray : function () {
+ var m = this;
+ return [
+ m.year(),
+ m.month(),
+ m.date(),
+ m.hours(),
+ m.minutes(),
+ m.seconds(),
+ m.milliseconds()
+ ];
+ },
- /**
- * 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;
- },
+ isValid : function () {
+ return isValid(this);
+ },
- /**
- * 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;
- }
- },
+ isDSTShifted : function () {
+ if (this._a) {
+ return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
+ }
- /**
- * 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;
- }
+ },
- var pt = ev.pointerType,
- types = {};
+ parsingFlags : function () {
+ return extend({}, this._pf);
+ },
- 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];
- },
+ invalidAt: function () {
+ return this._pf.overflow;
+ },
- /**
- * reset the stored pointers
- * @method reset
- */
- reset: function resetList() {
- this.pointers = {};
- }
- };
+ utc : function (keepLocalTime) {
+ return this.utcOffset(0, keepLocalTime);
+ },
+ local : function (keepLocalTime) {
+ if (this._isUTC) {
+ this.utcOffset(0, keepLocalTime);
+ this._isUTC = false;
- /**
- * @module hammer
- *
- * @class Detection
- * @static
- */
- var Detection = Hammer.detection = {
- // contains all registred Hammer.gestures in the correct order
- gestures: [],
+ if (keepLocalTime) {
+ this.subtract(this._dateUtcOffset(), 'm');
+ }
+ }
+ return this;
+ },
- // data of the current Hammer.gesture detection session
- current: null,
+ format : function (inputString) {
+ var output = formatMoment(this, inputString || moment.defaultFormat);
+ return this.localeData().postformat(output);
+ },
- // the previous Hammer.gesture session data
- // is a full clone of the previous gesture.current object
- previous: null,
+ add : createAdder(1, 'add'),
- // when this becomes true, no gestures are fired
- stopped: false,
+ subtract : createAdder(-1, 'subtract'),
- /**
- * 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;
- }
+ diff : function (input, units, asFloat) {
+ var that = makeAs(input, this),
+ zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4,
+ anchor, diff, output, daysAdjust;
- this.stopped = false;
+ units = normalizeUnits(units);
- // 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
- };
+ if (units === 'year' || units === 'month' || units === 'quarter') {
+ output = monthDiff(this, that);
+ if (units === 'quarter') {
+ output = output / 3;
+ } else 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);
+ },
- this.detect(eventData);
- },
+ from : function (time, withoutSuffix) {
+ return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
+ },
- /**
- * Hammer.gesture detection
- * @method detect
- * @param {Object} eventData
- * @return {any}
- */
- detect: function detect(eventData) {
- if(!this.current || this.stopped) {
- return;
- }
+ fromNow : function (withoutSuffix) {
+ return this.from(moment(), withoutSuffix);
+ },
- // extend event data with calculations about scale, distance etc
- eventData = this.extendEventData(eventData);
+ calendar : function (time) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're locat/utc/offset
+ // or not.
+ var now = time || moment(),
+ sod = makeAs(now, this).startOf('day'),
+ diff = this.diff(sod, 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+ return this.format(this.localeData().calendar(format, this, moment(now)));
+ },
- // hammer instance and instance options
- var inst = this.current.inst,
- instOptions = inst.options;
+ isLeapYear : function () {
+ return isLeapYear(this.year());
+ },
- // 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);
+ isDST : function () {
+ return (this.utcOffset() > this.clone().month(0).utcOffset() ||
+ this.utcOffset() > this.clone().month(5).utcOffset());
+ },
+
+ 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;
}
- }, this);
+ },
- // store as previous event event
- if(this.current) {
- this.current.lastEvent = eventData;
- }
+ month : makeAccessor('Month', true),
- if(eventData.eventType == EVENT_END) {
- this.stopDetect();
- }
+ 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 */
+ }
- return eventData;
- },
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ } else if (units === 'isoWeek') {
+ this.isoWeekday(1);
+ }
- /**
- * 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);
+ // quarters are also special
+ if (units === 'quarter') {
+ this.month(Math.floor(this.month() / 3) * 3);
+ }
- // reset the current
- this.current = null;
- this.stopped = true;
- },
+ return this;
+ },
- /**
- * 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;
+ endOf: function (units) {
+ units = normalizeUnits(units);
+ if (units === undefined || units === 'millisecond') {
+ return this;
+ }
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
+ },
- 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;
- }
+ isAfter: function (input, units) {
+ var inputMs;
+ units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
+ if (units === 'millisecond') {
+ input = moment.isMoment(input) ? input : moment(input);
+ return +this > +input;
+ } else {
+ inputMs = moment.isMoment(input) ? +input : +moment(input);
+ return inputMs < +this.clone().startOf(units);
+ }
+ },
- if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) {
- cur.futureCalcEvent = ev;
- }
+ isBefore: function (input, units) {
+ var inputMs;
+ units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
+ if (units === 'millisecond') {
+ input = moment.isMoment(input) ? input : moment(input);
+ return +this < +input;
+ } else {
+ inputMs = moment.isMoment(input) ? +input : +moment(input);
+ return +this.clone().endOf(units) < inputMs;
+ }
+ },
- 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);
+ isBetween: function (from, to, units) {
+ return this.isAfter(from, units) && this.isBefore(to, units);
+ },
- cur.lastCalcEvent = cur.futureCalcEvent || ev;
- cur.futureCalcEvent = ev;
- }
+ isSame: function (input, units) {
+ var inputMs;
+ units = normalizeUnits(units || 'millisecond');
+ if (units === 'millisecond') {
+ input = moment.isMoment(input) ? input : moment(input);
+ return +this === +input;
+ } else {
+ inputMs = +moment(input);
+ return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
+ }
+ },
- ev.velocityX = calcData.velocity.x;
- ev.velocityY = calcData.velocity.y;
- ev.interimAngle = calcData.angle;
- ev.interimDirection = calcData.direction;
- },
+ 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;
+ }
+ ),
- /**
- * 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;
+ 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;
+ }
+ ),
- // 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
- });
- });
- }
+ zone : deprecate(
+ 'moment().zone is deprecated, use moment().utcOffset instead. ' +
+ 'https://github.com/moment/moment/issues/1779',
+ function (input, keepLocalTime) {
+ if (input != null) {
+ if (typeof input !== 'string') {
+ input = -input;
+ }
- var deltaTime = ev.timeStamp - startEv.timeStamp,
- deltaX = ev.center.clientX - startEv.center.clientX,
- deltaY = ev.center.clientY - startEv.center.clientY;
+ this.utcOffset(input, keepLocalTime);
- this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY);
+ return this;
+ } else {
+ return -this.utcOffset();
+ }
+ }
+ ),
- Utils.extend(ev, {
- startEvent: startEv,
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ utcOffset : function (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = utcOffsetFromString(input);
+ }
+ if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = this._dateUtcOffset();
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (localAdjust != null) {
+ this.add(localAdjust, 'm');
+ }
+ if (offset !== input) {
+ if (!keepLocalTime || this._changeInProgress) {
+ addOrSubtractDurationFromMoment(this,
+ moment.duration(input - offset, 'm'), 1, false);
+ } else if (!this._changeInProgress) {
+ this._changeInProgress = true;
+ moment.updateOffset(this, true);
+ this._changeInProgress = null;
+ }
+ }
- deltaTime: deltaTime,
- deltaX: deltaX,
- deltaY: deltaY,
+ return this;
+ } else {
+ return this._isUTC ? offset : this._dateUtcOffset();
+ }
+ },
- 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)
- });
+ isLocal : function () {
+ return !this._isUTC;
+ },
- return ev;
- },
+ isUtcOffset : function () {
+ return this._isUTC;
+ },
- /**
- * 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;
- }
+ isUtc : function () {
+ return this._isUTC && this._offset === 0;
+ },
- // extend Hammer default options with the Hammer.gesture options
- Utils.extend(Hammer.defaults, options, true);
+ zoneAbbr : function () {
+ return this._isUTC ? 'UTC' : '';
+ },
- // set its index
- gesture.index = gesture.index || 1000;
+ zoneName : function () {
+ return this._isUTC ? 'Coordinated Universal Time' : '';
+ },
- // add Hammer.gesture to the list
- this.gestures.push(gesture);
+ parseZone : function () {
+ if (this._tzm) {
+ this.utcOffset(this._tzm);
+ } else if (typeof this._i === 'string') {
+ this.utcOffset(utcOffsetFromString(this._i));
+ }
+ return this;
+ },
- // sort the list by index
- this.gestures.sort(function(a, b) {
- if(a.index < b.index) {
- return -1;
+ hasAlignedHourOffset : function (input) {
+ if (!input) {
+ input = 0;
}
- if(a.index > b.index) {
- return 1;
+ else {
+ input = moment(input).utcOffset();
}
- return 0;
- });
-
- return this.gestures;
- }
- };
+ return (this.utcOffset() - input) % 60 === 0;
+ },
- /**
- * @module hammer
- */
+ daysInMonth : function () {
+ return daysInMonth(this.year(), this.month());
+ },
- /**
- * 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;
+ 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');
+ },
- // setup HammerJS window events and register all gestures
- // this also sets up the default options
- setup();
+ quarter : function (input) {
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
+ },
- /**
- * @property element
- * @type {HTMLElement}
- */
- this.element = element;
+ 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');
+ },
- /**
- * @property enabled
- * @type {Boolean}
- * @protected
- */
- this.enabled = true;
+ isoWeekYear : function (input) {
+ var year = weekOfYear(this, 1, 4).year;
+ return input == null ? year : this.add((input - year), 'y');
+ },
- /**
- * 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;
- });
+ week : function (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ },
- this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {});
+ isoWeek : function (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ },
- // 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);
- }
+ weekday : function (input) {
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
+ },
- /**
- * 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);
- }
- });
+ 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);
+ },
- /**
- * keep a list of user event handlers which needs to be removed when calling 'dispose'
- * @property eventHandlers
- * @type {Array}
- */
- this.eventHandlers = [];
- };
+ isoWeeksInYear : function () {
+ return weeksInYear(this.year(), 1, 4);
+ },
- 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;
- },
+ weeksInYear : function () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+ },
- /**
- * unbind events to the instance
- * @method off
- * @chainable
- * @param {String} gestures
- * @param {Function} handler
- */
- off: function offEvent(gestures, handler) {
- var self = this;
+ get : function (units) {
+ units = normalizeUnits(units);
+ return this[units]();
+ },
- Event.off(self.element, gestures, handler, function(type) {
- var index = Utils.inArray({ gesture: type, handler: handler });
- if(index !== false) {
- self.eventHandlers.splice(index, 1);
+ set : function (units, value) {
+ var unit;
+ if (typeof units === 'object') {
+ for (unit in units) {
+ this.set(unit, units[unit]);
+ }
}
- });
- return self;
- },
+ else {
+ units = normalizeUnits(units);
+ if (typeof this[units] === 'function') {
+ this[units](value);
+ }
+ }
+ return this;
+ },
- /**
- * trigger gesture event
- * @method trigger
- * @chainable
- * @param {String} gesture
- * @param {Object} [eventData]
- */
- trigger: function triggerEvent(gesture, eventData) {
- // optional
- if(!eventData) {
- eventData = {};
- }
+ // 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;
- // create DOM event
- var event = Hammer.DOCUMENT.createEvent('Event');
- event.initEvent(gesture, true, true);
- event.gesture = eventData;
+ if (key === undefined) {
+ return this._locale._abbr;
+ } else {
+ newLocaleData = moment.localeData(key);
+ if (newLocaleData != null) {
+ this._locale = newLocaleData;
+ }
+ return this;
+ }
+ },
- // 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;
- }
+ lang : deprecate(
+ 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ return this.locale(key);
+ }
+ }
+ ),
- element.dispatchEvent(event);
- return this;
- },
+ localeData : function () {
+ return this._locale;
+ },
- /**
- * enable of disable hammer.js detection
- * @method enable
- * @chainable
- * @param {Boolean} state
- */
- enable: function enable(state) {
- this.enabled = state;
- return this;
- },
+ _dateUtcOffset : function () {
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(this._d.getTimezoneOffset() / 15) * 15;
+ }
- /**
- * dispose this hammer instance
- * @method dispose
- * @return {Null}
- */
- dispose: function dispose() {
- var i, eh;
+ });
- // undo all changes made by stop_browser_behavior
- Utils.toggleBehavior(this.element, this.options.behavior, false);
+ function rawMonthSetter(mom, value) {
+ var dayOfMonth;
- // unbind all custom event handlers
- for(i = -1; (eh = this.eventHandlers[++i]);) {
- Utils.off(this.element, eh.gesture, eh.handler);
+ // 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;
+ }
}
- this.eventHandlers = [];
-
- // unbind the start event listener
- Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler);
-
- return null;
+ dayOfMonth = Math.min(mom.date(),
+ daysInMonth(mom.year(), value));
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+ return mom;
}
- };
-
-
- /**
- * @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
- */
- /**
- * @param {String} name
- */
- (function(name) {
- var triggered = false;
-
- function dragGesture(ev, inst) {
- var cur = Detection.current;
+ function rawGetter(mom, unit) {
+ return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
+ }
- // max touches
- if(inst.options.dragMaxTouches > 0 &&
- ev.touches.length > inst.options.dragMaxTouches) {
- return;
+ 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:
- triggered = false;
- break;
+ 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);
+ }
+ };
+ }
- case EVENT_MOVE:
- // when the distance we moved is too small we skip this gesture
- // or we can be already in dragging
- if(ev.distance < inst.options.dragMinDistance &&
- cur.name != name) {
- return;
- }
+ moment.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));
- var startCenter = cur.startEvent.center;
+ // 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;
- // we are dragging!
- if(cur.name != name) {
- cur.name = name;
- if(inst.options.dragDistanceCorrection && ev.distance > 0) {
- // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center.
- // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0.
- // It might be useful to save the original start point somewhere
- var factor = Math.abs(inst.options.dragMinDistance / ev.distance);
- startCenter.pageX += ev.deltaX * factor;
- startCenter.pageY += ev.deltaY * factor;
- startCenter.clientX += ev.deltaX * factor;
- startCenter.clientY += ev.deltaY * factor;
+ // add aliased format methods
+ moment.fn.toJSON = moment.fn.toISOString;
- // recalculate event data using new start point
- ev = Detection.extendEventData(ev);
- }
- }
+ // alias isUtc for dev-friendliness
+ moment.fn.isUTC = moment.fn.isUtc;
- // lock drag to axis?
- if(cur.lastEvent.dragLockToAxis ||
- ( inst.options.dragLockToAxis &&
- inst.options.dragLockMinDistance <= ev.distance
- )) {
- ev.dragLockToAxis = true;
- }
+ /************************************
+ Duration Prototype
+ ************************************/
- // 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;
- }
- }
- // first time, trigger dragstart event
- if(!triggered) {
- inst.trigger(name + 'start', ev);
- triggered = true;
- }
+ function daysToYears (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ return days * 400 / 146097;
+ }
+
+ function yearsToDays (years) {
+ // years * 365 + absRound(years / 4) -
+ // absRound(years / 100) + absRound(years / 400);
+ return years * 146097 / 400;
+ }
- // trigger events
- inst.trigger(name, ev);
- inst.trigger(name + ev.direction, ev);
+ extend(moment.duration.fn = Duration.prototype, {
- var isVertical = Utils.isVertical(ev.direction);
+ _bubble : function () {
+ var milliseconds = this._milliseconds,
+ days = this._days,
+ months = this._months,
+ data = this._data,
+ seconds, minutes, hours, years = 0;
- // block the browser events
- if((inst.options.dragBlockVertical && isVertical) ||
- (inst.options.dragBlockHorizontal && !isVertical)) {
- ev.preventDefault();
- }
- break;
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
- case EVENT_RELEASE:
- if(triggered && ev.changedLength <= inst.options.dragMaxTouches) {
- inst.trigger(name + 'end', ev);
- triggered = false;
- }
- break;
+ seconds = absRound(milliseconds / 1000);
+ data.seconds = seconds % 60;
- case EVENT_END:
- triggered = false;
- break;
- }
- }
+ minutes = absRound(seconds / 60);
+ data.minutes = minutes % 60;
- 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,
+ hours = absRound(minutes / 60);
+ data.hours = hours % 24;
- /**
- * 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,
+ days += absRound(hours / 24);
- /**
- * set 0 for unlimited, but this can conflict with transform
- * @property dragMaxTouches
- * @type {Number}
- * @default 1
- */
- dragMaxTouches: 1,
+ // Accurately convert days to years, assume start from year 0.
+ years = absRound(daysToYears(days));
+ days -= absRound(yearsToDays(years));
- /**
- * 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,
+ // 30 days to a month
+ // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
+ months += absRound(days / 30);
+ days %= 30;
- /**
- * same as `dragBlockHorizontal`, but for vertical movement
- * @property dragBlockVertical
- * @type {Boolean}
- * @default false
- */
- dragBlockVertical: false,
+ // 12 months -> 1 year
+ years += absRound(months / 12);
+ months %= 12;
- /**
- * 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,
+ data.days = days;
+ data.months = months;
+ data.years = years;
+ },
- /**
- * 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');
+ abs : function () {
+ this._milliseconds = Math.abs(this._milliseconds);
+ this._days = Math.abs(this._days);
+ this._months = Math.abs(this._months);
- /**
- * @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);
- }
- };
+ 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);
- /**
- * @module gestures
- */
- /**
- * Touch stays at the same place for x time
- *
- * @class Hold
- * @static
- */
- /**
- * @event hold
- * @param {Object} ev
- */
+ return this;
+ },
- /**
- * @param {String} name
- */
- (function(name) {
- var timer;
+ weeks : function () {
+ return absRound(this.days() / 7);
+ },
- function holdGesture(ev, inst) {
- var options = inst.options,
- current = Detection.current;
+ valueOf : function () {
+ return this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ toInt(this._months / 12) * 31536e6;
+ },
- switch(ev.eventType) {
- case EVENT_START:
- clearTimeout(timer);
+ humanize : function (withSuffix) {
+ var output = relativeTime(this, !withSuffix, this.localeData());
- // set the gesture so we can check in the timeout if it still is
- current.name = name;
+ if (withSuffix) {
+ output = this.localeData().pastFuture(+this, output);
+ }
- // set timer and if after the timeout it still is hold,
- // we trigger the hold event
- timer = setTimeout(function() {
- if(current && current.name == name) {
- inst.trigger(name, ev);
- }
- }, options.holdTimeout);
- break;
+ return this.localeData().postformat(output);
+ },
- case EVENT_MOVE:
- if(ev.distance > options.holdThreshold) {
- clearTimeout(timer);
- }
- break;
+ add : function (input, val) {
+ // supports only 2.0-style add(1, 's') or add(moment)
+ var dur = moment.duration(input, val);
- case EVENT_RELEASE:
- clearTimeout(timer);
- break;
- }
- }
+ this._milliseconds += dur._milliseconds;
+ this._days += dur._days;
+ this._months += dur._months;
- Hammer.gestures.Hold = {
- name: name,
- index: 10,
- defaults: {
- /**
- * @property holdTimeout
- * @type {Number}
- * @default 500
- */
- holdTimeout: 500,
+ this._bubble();
- /**
- * movement allowed while holding
- * @property holdThreshold
- * @type {Number}
- * @default 2
- */
- holdThreshold: 2
+ return this;
},
- handler: holdGesture
- };
- })('hold');
- /**
- * @module gestures
- */
- /**
- * when a touch is being released from the page
- *
- * @class Release
- * @static
- */
- /**
- * @event release
- * @param {Object} ev
- */
- Hammer.gestures.Release = {
- name: 'release',
- index: Infinity,
- handler: function releaseGesture(ev, inst) {
- if(ev.eventType == EVENT_RELEASE) {
- inst.trigger(this.name, ev);
- }
- }
- };
+ subtract : function (input, val) {
+ var dur = moment.duration(input, val);
- /**
- * @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,
+ this._milliseconds -= dur._milliseconds;
+ this._days -= dur._days;
+ this._months -= dur._months;
- /**
- * @property swipeMaxTouches
- * @type {Number}
- * @default 1
- */
- swipeMaxTouches: 1,
+ this._bubble();
- /**
- * horizontal swipe velocity
- * @property swipeVelocityX
- * @type {Number}
- * @default 0.6
- */
- swipeVelocityX: 0.6,
+ return this;
+ },
- /**
- * vertical swipe velocity
- * @property swipeVelocityY
- * @type {Number}
- * @default 0.6
- */
- swipeVelocityY: 0.6
- },
+ get : function (units) {
+ units = normalizeUnits(units);
+ return this[units.toLowerCase() + 's']();
+ },
- handler: function swipeGesture(ev, inst) {
- if(ev.eventType == EVENT_RELEASE) {
- var touches = ev.touches.length,
- options = inst.options;
+ as : function (units) {
+ var days, months;
+ units = normalizeUnits(units);
- // max touches
- if(touches < options.swipeMinTouches ||
- touches > options.swipeMaxTouches) {
- return;
+ if (units === 'month' || units === 'year') {
+ days = this._days + this._milliseconds / 864e5;
+ months = this._months + daysToYears(days) * 12;
+ return units === 'month' ? months : months / 12;
+ } else {
+ // handle milliseconds separately because of floating point math errors (issue #1867)
+ days = this._days + Math.round(yearsToDays(this._months / 12));
+ switch (units) {
+ case 'week': return days / 7 + this._milliseconds / 6048e5;
+ case 'day': return days + this._milliseconds / 864e5;
+ case 'hour': return days * 24 + this._milliseconds / 36e5;
+ case 'minute': return days * 24 * 60 + this._milliseconds / 6e4;
+ case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000;
+ // Math.floor prevents floating point math errors here
+ case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds;
+ default: throw new Error('Unknown unit ' + units);
+ }
}
+ },
- // when the distance we moved is too small we skip this gesture
- // or we can be already in dragging
- if(ev.velocityX > options.swipeVelocityX ||
- ev.velocityY > options.swipeVelocityY) {
- // trigger swipe events
- inst.trigger(this.name, ev);
- inst.trigger(this.name + ev.direction, ev);
+ lang : moment.fn.lang,
+ locale : moment.fn.locale,
+
+ toIsoString : deprecate(
+ 'toIsoString() is deprecated. Please use toISOString() instead ' +
+ '(notice the capitals)',
+ function () {
+ return this.toISOString();
+ }
+ ),
+
+ toISOString : function () {
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var years = Math.abs(this.years()),
+ months = Math.abs(this.months()),
+ days = Math.abs(this.days()),
+ hours = Math.abs(this.hours()),
+ minutes = Math.abs(this.minutes()),
+ seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
+
+ 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' : '');
+ },
+
+ localeData : function () {
+ return this._locale;
+ },
+
+ toJSON : function () {
+ return this.toISOString();
}
+ });
+
+ moment.duration.fn.toString = moment.duration.fn.toISOString;
+
+ function makeDurationGetter(name) {
+ moment.duration.fn[name] = function () {
+ return this._data[name];
+ };
}
- };
- /**
- * @module gestures
- */
- /**
- * Single tap and a double tap on a place
- *
- * @class Tap
- * @static
- */
- /**
- * @event tap
- * @param {Object} ev
- */
- /**
- * @event doubletap
- * @param {Object} ev
- */
+ for (i in unitMillisecondFactors) {
+ if (hasOwnProp(unitMillisecondFactors, i)) {
+ makeDurationGetter(i.toLowerCase());
+ }
+ }
- /**
- * @param {String} name
- */
- (function(name) {
- var hasMoved = false;
+ moment.duration.fn.asMilliseconds = function () {
+ return this.as('ms');
+ };
+ moment.duration.fn.asSeconds = function () {
+ return this.as('s');
+ };
+ moment.duration.fn.asMinutes = function () {
+ return this.as('m');
+ };
+ moment.duration.fn.asHours = function () {
+ return this.as('h');
+ };
+ moment.duration.fn.asDays = function () {
+ return this.as('d');
+ };
+ moment.duration.fn.asWeeks = function () {
+ return this.as('weeks');
+ };
+ moment.duration.fn.asMonths = function () {
+ return this.as('M');
+ };
+ moment.duration.fn.asYears = function () {
+ return this.as('y');
+ };
- function tapGesture(ev, inst) {
- var options = inst.options,
- current = Detection.current,
- prev = Detection.previous,
- sincePrev,
- didDoubleTap;
+ /************************************
+ Default Locale
+ ************************************/
- switch(ev.eventType) {
- case EVENT_START:
- hasMoved = false;
- break;
- case EVENT_MOVE:
- hasMoved = hasMoved || (ev.distance > options.tapMaxDistance);
- break;
+ // Set default locale, other locale will inherit from English.
+ moment.locale('en', {
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (toInt(number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ }
+ });
- 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;
+ /* EMBED_LOCALES */
- // check if double tap
- if(prev && prev.name == name &&
- (sincePrev && sincePrev < options.doubleTapInterval) &&
- ev.distance < options.doubleTapDistance) {
- inst.trigger('doubletap', ev);
- didDoubleTap = true;
- }
+ /************************************
+ Exposing Moment
+ ************************************/
- // do a single tap
- if(!didDoubleTap || options.tapAlways) {
- current.name = name;
- inst.trigger(current.name, ev);
- }
- }
- break;
+ 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;
}
}
- 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,
-
- /**
- * max distance of movement of a tap, this is for the slow tappers
- * @property tapMaxDistance
- * @type {Number}
- * @default 10
- */
- tapMaxDistance: 10,
-
- /**
- * always trigger the `tap` event, even while double-tapping
- * @property tapAlways
- * @type {Boolean}
- * @default true
- */
- tapAlways: true,
+ // 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;
+ }
- /**
- * max distance between two taps
- * @property doubleTapDistance
- * @type {Number}
- * @default 20
- */
- doubleTapDistance: 20,
+ return moment;
+ }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ makeGlobal(true);
+ } else {
+ makeGlobal();
+ }
+ }).call(this);
+
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module)))
- /**
- * max time between two taps
- * @property doubleTapInterval
- * @type {Number}
- * @default 300
- */
- doubleTapInterval: 300
- }
- };
- })('tap');
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";
/**
- * @module gestures
- */
- /**
- * when a touch is being touched at the page
- *
- * @class Touch
- * @static
- */
- /**
- * @event touch
- * @param {Object} ev
+ * Created by Alex on 11/6/2014.
*/
- Hammer.gestures.Touch = {
- name: 'touch',
- index: -Infinity,
- defaults: {
- /**
- * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page,
- * but it improves gestures like transforming and dragging.
- * be careful with using this, it can be very annoying for users to be stuck on the page
- * @property preventDefault
- * @type {Boolean}
- * @default false
- */
- preventDefault: false,
- /**
- * disable mouse events, so only touch (or pen!) input triggers events
- * @property preventMouse
- * @type {Boolean}
- * @default false
- */
- preventMouse: false
- },
- handler: function touchGesture(ev, inst) {
- if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) {
- ev.stopDetect();
- return;
- }
+ // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60
+ // if the module has no dependencies, the above pattern can be simplified to
+ (function (root, factory) {
+ if (true) {
+ // AMD. Register as an anonymous module.
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ // Browser globals (root is window)
+ root.keycharm = factory();
+ }
+ }(this, function () {
- if(inst.options.preventDefault) {
- ev.preventDefault();
- }
+ function keycharm(options) {
+ var preventDefault = options && options.preventDefault || false;
- if(ev.eventType == EVENT_TOUCH) {
- inst.trigger('touch', ev);
- }
- }
- };
+ var container = options && options.container || window;
- /**
- * @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
- */
+ var _exportFunctions = {};
+ var _bound = {keydown:{}, keyup:{}};
+ var _keys = {};
+ var i;
- /**
- * @param {String} name
- */
- (function(name) {
- var triggered = false;
+ // a - z
+ for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};}
+ // A - Z
+ for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};}
+ // 0 - 9
+ for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};}
+ // F1 - F12
+ for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};}
+ // num0 - num9
+ for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};}
- function transformGesture(ev, inst) {
- switch(ev.eventType) {
- case EVENT_START:
- triggered = false;
- break;
+ // numpad misc
+ _keys['num*'] = {code:106, shift: false};
+ _keys['num+'] = {code:107, shift: false};
+ _keys['num-'] = {code:109, shift: false};
+ _keys['num/'] = {code:111, shift: false};
+ _keys['num.'] = {code:110, shift: false};
+ // arrows
+ _keys['left'] = {code:37, shift: false};
+ _keys['up'] = {code:38, shift: false};
+ _keys['right'] = {code:39, shift: false};
+ _keys['down'] = {code:40, shift: false};
+ // extra keys
+ _keys['space'] = {code:32, shift: false};
+ _keys['enter'] = {code:13, shift: false};
+ _keys['shift'] = {code:16, shift: undefined};
+ _keys['esc'] = {code:27, shift: false};
+ _keys['backspace'] = {code:8, shift: false};
+ _keys['tab'] = {code:9, shift: false};
+ _keys['ctrl'] = {code:17, shift: false};
+ _keys['alt'] = {code:18, shift: false};
+ _keys['delete'] = {code:46, shift: false};
+ _keys['pageup'] = {code:33, shift: false};
+ _keys['pagedown'] = {code:34, shift: false};
+ // symbols
+ _keys['='] = {code:187, shift: false};
+ _keys['-'] = {code:189, shift: false};
+ _keys[']'] = {code:221, shift: false};
+ _keys['['] = {code:219, shift: false};
- case EVENT_MOVE:
- // at least multitouch
- if(ev.touches.length < 2) {
- return;
- }
- var scaleThreshold = Math.abs(1 - ev.scale);
- var rotationThreshold = Math.abs(ev.rotation);
- // when the distance we moved is too small we skip this gesture
- // or we can be already in dragging
- if(scaleThreshold < inst.options.transformMinScale &&
- rotationThreshold < inst.options.transformMinRotation) {
- return;
- }
+ var down = function(event) {handleEvent(event,'keydown');};
+ var up = function(event) {handleEvent(event,'keyup');};
- // we are transforming!
- Detection.current.name = name;
+ // handle the actualy bound key with the event
+ var handleEvent = function(event,type) {
+ if (_bound[type][event.keyCode] !== undefined) {
+ var bound = _bound[type][event.keyCode];
+ for (var i = 0; i < bound.length; i++) {
+ if (bound[i].shift === undefined) {
+ bound[i].fn(event);
+ }
+ else if (bound[i].shift == true && event.shiftKey == true) {
+ bound[i].fn(event);
+ }
+ else if (bound[i].shift == false && event.shiftKey == false) {
+ bound[i].fn(event);
+ }
+ }
- // first time, trigger dragstart event
- if(!triggered) {
- inst.trigger(name + 'start', ev);
- triggered = true;
- }
+ if (preventDefault == true) {
+ event.preventDefault();
+ }
+ }
+ };
- inst.trigger(name, ev); // basic transform event
+ // bind a key to a callback
+ _exportFunctions.bind = function(key, callback, type) {
+ if (type === undefined) {
+ type = 'keydown';
+ }
+ if (_keys[key] === undefined) {
+ throw new Error("unsupported key: " + key);
+ }
+ if (_bound[type][_keys[key].code] === undefined) {
+ _bound[type][_keys[key].code] = [];
+ }
+ _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift});
+ };
- // 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;
+ // bind all keys to a call back (demo purposes)
+ _exportFunctions.bindAll = function(callback, type) {
+ if (type === undefined) {
+ type = 'keydown';
+ }
+ for (var key in _keys) {
+ if (_keys.hasOwnProperty(key)) {
+ _exportFunctions.bind(key,callback,type);
+ }
+ }
+ };
- case EVENT_RELEASE:
- if(triggered && ev.changedLength < 2) {
- inst.trigger(name + 'end', ev);
- triggered = false;
- }
- break;
+ // get the key label from an event
+ _exportFunctions.getKey = function(event) {
+ for (var key in _keys) {
+ if (_keys.hasOwnProperty(key)) {
+ if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) {
+ return key;
+ }
+ else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) {
+ return key;
+ }
+ else if (event.keyCode == _keys[key].code && key == 'shift') {
+ return key;
+ }
}
- }
+ }
+ return "unknown key, currently not supported";
+ };
- 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,
+ // unbind either a specific callback from a key or all of them (by leaving callback undefined)
+ _exportFunctions.unbind = function(key, callback, type) {
+ if (type === undefined) {
+ type = 'keydown';
+ }
+ if (_keys[key] === undefined) {
+ throw new Error("unsupported key: " + key);
+ }
+ if (callback !== undefined) {
+ var newBindings = [];
+ var bound = _bound[type][_keys[key].code];
+ if (bound !== undefined) {
+ for (var i = 0; i < bound.length; i++) {
+ if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) {
+ newBindings.push(_bound[type][_keys[key].code][i]);
+ }
+ }
+ }
+ _bound[type][_keys[key].code] = newBindings;
+ }
+ else {
+ _bound[type][_keys[key].code] = [];
+ }
+ };
- /**
- * rotation in degrees
- * @property transformMinRotation
- * @type {Number}
- * @default 1
- */
- transformMinRotation: 1
- },
+ // reset all bound variables.
+ _exportFunctions.reset = function() {
+ _bound = {keydown:{}, keyup:{}};
+ };
- handler: transformGesture
+ // unbind all listeners and reset all variables.
+ _exportFunctions.destroy = function() {
+ _bound = {keydown:{}, keyup:{}};
+ container.removeEventListener('keydown', down, true);
+ container.removeEventListener('keyup', up, true);
};
- })('transform');
- /**
- * @module hammer
- */
+ // create listeners.
+ container.addEventListener('keydown',down,true);
+ container.addEventListener('keyup',up,true);
+
+ // return the public functions.
+ return _exportFunctions;
+ }
+
+ return keycharm;
+ }));
+
- // AMD export
- if(true) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
- return Hammer;
- }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- // commonjs export
- } else if(typeof module !== 'undefined' && module.exports) {
- module.exports = Hammer;
- // browser export
- } else {
- window.Hammer = Hammer;
- }
- })(window);
/***/ },
/* 60 */
/***/ function(module, exports, __webpack_require__) {
var util = __webpack_require__(1);
- var RepulsionMixin = __webpack_require__(67);
- var HierarchialRepulsionMixin = __webpack_require__(68);
- var BarnesHutMixin = __webpack_require__(69);
+ var RepulsionMixin = __webpack_require__(68);
+ var HierarchialRepulsionMixin = __webpack_require__(69);
+ var BarnesHutMixin = __webpack_require__(70);
/**
* Toggling barnes Hut calculation on and off.
@@ -29890,6 +30227,9 @@ return /******/ (function(modules) { // webpackBootstrap
this.backupConstants = {};
util.deepExtend(this.backupConstants,this.constants);
+ var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10);
+ var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10)
+
var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"];
this.physicsConfiguration = document.createElement('div');
this.physicsConfiguration.className = "PhysicsConfiguration";
@@ -29904,16 +30244,16 @@ return /******/ (function(modules) { // webpackBootstrap
'
' +
'
Barnes Hut
' +
'
' +
- '
gravitationalConstant
0
-20000
' +
+ '
gravitationalConstant
0
-'+maxGravitational+'
' +
'
' +
'
' +
- '
centralGravity
0
3
' +
+ '
centralGravity
0
3
' +
'
' +
'
' +
'
springLength
0
500
' +
'
' +
'
' +
- '
springConstant
0
0.5
' +
+ '
springConstant
0
'+maxSpring+'
' +
'
' +
'
' +
'
damping
0
0.3
' +
@@ -30309,7 +30649,7 @@ return /******/ (function(modules) { // webpackBootstrap
// this is called here because if clusterin is disabled, the start and stabilize are called in
// the setData function.
- if (this.stabilize) {
+ if (this.constants.stabilize == true) {
this._stabilize();
}
this.start();
@@ -30329,14 +30669,14 @@ return /******/ (function(modules) { // webpackBootstrap
// we first cluster the hubs, then we pull in the outliers, repeat
while (numberOfNodes > maxNumberOfNodes && level < maxLevels) {
- if (level % 3 == 0) {
+ if (level % 3 == 0.0) {
this.forceAggregateHubs(true);
this.normalizeClusterLevels();
}
else {
this.increaseClusterLevel(); // this also includes a cluster normalization
}
-
+ this.forceAggregateHubs(true);
numberOfNodes = this.nodeIndices.length;
level += 1;
}
@@ -30349,7 +30689,7 @@ return /******/ (function(modules) { // webpackBootstrap
};
/**
- * This function can be called to open up a specific cluster. It is only called by
+ * This function can be called to open up a specific cluster.
* It will unpack the cluster back one level.
*
* @param node | Node object: cluster to open.
@@ -30372,9 +30712,8 @@ return /******/ (function(modules) { // webpackBootstrap
else {
this._expandClusterNode(node,false,true);
- // update the index list, dynamic edges and labels
+ // update the index list and labels
this._updateNodeIndexList();
- this._updateDynamicEdges();
this._updateCalculationNodes();
this.updateLabels();
}
@@ -30390,7 +30729,7 @@ return /******/ (function(modules) { // webpackBootstrap
* This calls the updateClustes with default arguments
*/
exports.updateClustersDefault = function() {
- if (this.constants.clustering.enabled == true) {
+ if (this.constants.clustering.enabled == true && this.constants.clustering.clusterByZoom == true) {
this.updateClusters(0,false,false);
}
};
@@ -30432,18 +30771,21 @@ return /******/ (function(modules) { // webpackBootstrap
var isMovingBeforeClustering = this.moving;
var amountOfNodes = this.nodeIndices.length;
+ var detectedZoomingIn = (this.previousScale < this.scale && zoomDirection == 0);
+ var detectedZoomingOut = (this.previousScale > this.scale && zoomDirection == 0);
+
// on zoom out collapse the sector if the scale is at the level the sector was made
- if (this.previousScale > this.scale && zoomDirection == 0) {
+ if (detectedZoomingOut == true) {
this._collapseSector();
}
// check if we zoom in or out
- if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out
+ if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out
// forming clusters when forced pulls outliers in. When not forced, the edge length of the
// outer nodes determines if it is being clustered
this._formClusters(force);
}
- else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in
+ else if (detectedZoomingIn == true || zoomDirection == 1) { // zoom in
if (force == true) {
// _openClusters checks for each node if the formationScale of the cluster is smaller than
// the current scale and if so, declusters. When forced, all clusters are reduced by one step
@@ -30451,27 +30793,27 @@ return /******/ (function(modules) { // webpackBootstrap
}
else {
// if a cluster takes up a set percentage of the active window
- this._openClustersBySize();
+ //this._openClustersBySize();
+ this._openClusters(recursive, false);
}
}
this._updateNodeIndexList();
// if a cluster was NOT formed and the user zoomed out, we try clustering by hubs
- if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) {
+ if (this.nodeIndices.length == amountOfNodes && (detectedZoomingOut == true || zoomDirection == -1)) {
this._aggregateHubs(force);
this._updateNodeIndexList();
}
// we now reduce chains.
- if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out
+ if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out
this.handleChains();
this._updateNodeIndexList();
}
this.previousScale = this.scale;
- // rest of the update the index list, dynamic edges and labels
- this._updateDynamicEdges();
+ // update labels
this.updateLabels();
// if a cluster was formed, we increase the clusterSession
@@ -30516,7 +30858,7 @@ return /******/ (function(modules) { // webpackBootstrap
/**
- * This function is fired by keypress. It forces hubs to form.
+ * This function forces hubs to form.
*
*/
exports.forceAggregateHubs = function(doNotStart) {
@@ -30527,9 +30869,10 @@ return /******/ (function(modules) { // webpackBootstrap
// update the index list, dynamic edges and labels
this._updateNodeIndexList();
- this._updateDynamicEdges();
this.updateLabels();
+ this._updateCalculationNodes();
+
// if a cluster was formed, we increase the clusterSession
if (this.nodeIndices.length != amountOfNodes) {
this.clusterSession += 1;
@@ -30549,13 +30892,15 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
exports._openClustersBySize = function() {
- for (var nodeId in this.nodes) {
- if (this.nodes.hasOwnProperty(nodeId)) {
- var node = this.nodes[nodeId];
- if (node.inView() == true) {
- if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) ||
- (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) {
- this.openCluster(node);
+ if (this.constants.clustering.clusterByZoom == true) {
+ for (var nodeId in this.nodes) {
+ if (this.nodes.hasOwnProperty(nodeId)) {
+ var node = this.nodes[nodeId];
+ if (node.inView() == true) {
+ if ((node.width * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) ||
+ (node.height * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) {
+ this.openCluster(node);
+ }
}
}
}
@@ -30591,12 +30936,12 @@ return /******/ (function(modules) { // webpackBootstrap
exports._expandClusterNode = function(parentNode, recursive, force, openAll) {
// first check if node is a cluster
if (parentNode.clusterSize > 1) {
- // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20
- if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) {
- openAll = true;
+ if (openAll === undefined) {
+ openAll = false;
}
- recursive = openAll ? true : recursive;
+ // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20
+ recursive = openAll || recursive;
// if the last child has been added on a smaller scale than current scale decluster
if (parentNode.formationScale < this.scale || force == true) {
// we will check if any of the contained child nodes should be removed from the cluster
@@ -30639,7 +30984,7 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) {
- var childNode = parentNode.containedNodes[containedNodeId];
+ var childNode = parentNode.containedNodes[containedNodeId]
// if child node has been added on smaller scale than current, kick out
if (childNode.formationScale < this.scale || force == true) {
@@ -30662,7 +31007,6 @@ return /******/ (function(modules) { // webpackBootstrap
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-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
childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random());
@@ -30730,7 +31074,9 @@ return /******/ (function(modules) { // webpackBootstrap
*/
exports._formClusters = function(force) {
if (force == false) {
- this._formClustersByZoom();
+ if (this.constants.clustering.clusterByZoom == true) {
+ this._formClustersByZoom();
+ }
}
else {
this._forceClustersByZoom();
@@ -30744,8 +31090,8 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
exports._formClustersByZoom = function() {
- var dx,dy,length,
- minLength = this.constants.clustering.clusterEdgeThreshold/this.scale;
+ var dx,dy,length;
+ var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale;
// check if any edges are shorter than minLength and start the clustering
// the clustering favours the node with the larger mass
@@ -30768,10 +31114,10 @@ return /******/ (function(modules) { // webpackBootstrap
childNode = edge.from;
}
- if (childNode.dynamicEdgesLength == 1) {
+ if (childNode.dynamicEdges.length == 1) {
this._addToCluster(parentNode,childNode,false);
}
- else if (parentNode.dynamicEdgesLength == 1) {
+ else if (parentNode.dynamicEdges.length == 1) {
this._addToCluster(childNode,parentNode,false);
}
}
@@ -30794,10 +31140,9 @@ return /******/ (function(modules) { // webpackBootstrap
var childNode = this.nodes[nodeId];
// the edges can be swallowed by another decrease
- if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) {
+ if (childNode.dynamicEdges.length == 1) {
var edge = childNode.dynamicEdges[0];
var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId];
-
// group to the largest node
if (childNode.id != parentNode.id) {
if (parentNode.options.mass > childNode.options.mass) {
@@ -30877,9 +31222,13 @@ return /******/ (function(modules) { // webpackBootstrap
if (absorptionSizeOffset === undefined) {
absorptionSizeOffset = 0;
}
+ //this.hubThreshold = 43
+ //if (hubNode.dynamicEdgesLength < 0) {
+ // console.error(hubNode.dynamicEdgesLength, this.hubThreshold, onlyEqual)
+ //}
// we decide if the node is a hub
- if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) ||
- (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) {
+ if ((hubNode.dynamicEdges.length >= this.hubThreshold && onlyEqual == false) ||
+ (hubNode.dynamicEdges.length == this.hubThreshold && onlyEqual == true)) {
// initialize variables
var dx,dy,length;
var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale;
@@ -30892,7 +31241,7 @@ return /******/ (function(modules) { // webpackBootstrap
edgesIdarray.push(hubNode.dynamicEdges[j].id);
}
- // if the hub clustering is not forces, we check if one of the edges connected
+ // if the hub clustering is not forced, we check if one of the edges connected
// to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold
if (force == false) {
allowCluster = false;
@@ -30917,19 +31266,31 @@ return /******/ (function(modules) { // webpackBootstrap
// start the clustering if allowed
if ((!force && allowCluster) || force) {
- // we loop over all edges INITIALLY connected to this hub
+ var children = [];
+ var childrenIds = {};
+ // we loop over all edges INITIALLY connected to this hub to get a list of the childNodes
for (j = 0; j < amountOfInitialEdges; j++) {
edge = this.edges[edgesIdarray[j]];
- // the edge can be clustered by this function in a previous loop
- if (edge !== undefined) {
- var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId];
- // we do not want hubs to merge with other hubs nor do we want to cluster itself.
- if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) &&
- (childNode.id != hubNode.id)) {
- this._addToCluster(hubNode,childNode,force);
- }
+ var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId];
+ if (childrenIds[childNode.id] === undefined) {
+ childrenIds[childNode.id] = true;
+ children.push(childNode);
+ }
+ }
+
+ for (j = 0; j < children.length; j++) {
+ var childNode = children[j];
+ // we do not want hubs to merge with other hubs nor do we want to cluster itself.
+ if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) &&
+ (childNode.id != hubNode.id)) {
+ this._addToCluster(hubNode,childNode,force);
+
+ }
+ else {
+ //console.log("WILL NOT MERGE:",childNode.dynamicEdges.length , (this.hubThreshold + absorptionSizeOffset))
}
}
+
}
}
};
@@ -30947,14 +31308,16 @@ return /******/ (function(modules) { // webpackBootstrap
exports._addToCluster = function(parentNode, childNode, force) {
// join child node in the parent node
parentNode.containedNodes[childNode.id] = childNode;
-
+ //console.log(parentNode.id, childNode.id)
// manage all the edges connected to the child and parent nodes
for (var i = 0; i < childNode.dynamicEdges.length; i++) {
var edge = childNode.dynamicEdges[i];
if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode
+ //console.log("COLLECT",parentNode.id, childNode.id, edge.toId, edge.fromId)
this._addToContainedEdges(parentNode,childNode,edge);
}
else {
+ //console.log("REWIRE",parentNode.id, childNode.id, edge.toId, edge.fromId)
this._connectEdgeToCluster(parentNode,childNode,edge);
}
}
@@ -30982,7 +31345,6 @@ return /******/ (function(modules) { // webpackBootstrap
// forced clusters only open from screen size and double tap
if (force == true) {
- // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3);
parentNode.formationScale = 0;
}
else {
@@ -31006,36 +31368,6 @@ return /******/ (function(modules) { // webpackBootstrap
};
- /**
- * This function will apply the changes made to the remainingEdges during the formation of the clusters.
- * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree.
- * It has to be called if a level is collapsed. It is called by _formClusters().
- * @private
- */
- exports._updateDynamicEdges = function() {
- for (var i = 0; i < this.nodeIndices.length; i++) {
- var node = this.nodes[this.nodeIndices[i]];
- node.dynamicEdgesLength = node.dynamicEdges.length;
-
- // this corrects for multiple edges pointing at the same other node
- var correction = 0;
- if (node.dynamicEdgesLength > 1) {
- for (var j = 0; j < node.dynamicEdgesLength - 1; j++) {
- var edgeToId = node.dynamicEdges[j].toId;
- var edgeFromId = node.dynamicEdges[j].fromId;
- for (var k = j+1; k < node.dynamicEdgesLength; k++) {
- if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) ||
- (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) {
- correction += 1;
- }
- }
- }
- }
- node.dynamicEdgesLength -= correction;
- }
- };
-
-
/**
* This adds an edge from the childNode to the contained edges of the parent node
*
@@ -31046,7 +31378,7 @@ return /******/ (function(modules) { // webpackBootstrap
*/
exports._addToContainedEdges = function(parentNode, childNode, edge) {
// create an array object if it does not yet exist for this childNode
- if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) {
+ if (parentNode.containedEdges[childNode.id] === undefined) {
parentNode.containedEdges[childNode.id] = []
}
// add this edge to the list
@@ -31085,7 +31417,6 @@ return /******/ (function(modules) { // webpackBootstrap
edge.toId = parentNode.id;
}
else { // edge connected to other node with the "from" side
-
edge.originalFromId.push(childNode.id);
edge.from = parentNode;
edge.fromId = parentNode.id;
@@ -31186,12 +31517,14 @@ return /******/ (function(modules) { // webpackBootstrap
* @private
*/
exports._validateEdges = function(parentNode) {
+ var dynamicEdges = []
for (var i = 0; i < parentNode.dynamicEdges.length; i++) {
var edge = parentNode.dynamicEdges[i];
- if (parentNode.id != edge.toId && parentNode.id != edge.fromId) {
- parentNode.dynamicEdges.splice(i,1);
+ if (parentNode.id == edge.toId || parentNode.id == edge.fromId) {
+ dynamicEdges.push(edge);
}
}
+ parentNode.dynamicEdges = dynamicEdges;
};
@@ -31259,7 +31592,7 @@ return /******/ (function(modules) { // webpackBootstrap
// for (nodeId in this.nodes) {
// if (this.nodes.hasOwnProperty(nodeId)) {
// node = this.nodes[nodeId];
- // node.label = String(node.level);
+ // node.label = String(node.clusterSize + ":" + node.dynamicEdges.length);
// }
// }
@@ -31299,7 +31632,6 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
this._updateNodeIndexList();
- this._updateDynamicEdges();
// if a cluster was formed, we increase the clusterSession
if (this.nodeIndices.length != amountOfNodes) {
this.clusterSession += 1;
@@ -31360,11 +31692,11 @@ return /******/ (function(modules) { // webpackBootstrap
for (var i = 0; i < this.nodeIndices.length; i++) {
var node = this.nodes[this.nodeIndices[i]];
- if (node.dynamicEdgesLength > largestHub) {
- largestHub = node.dynamicEdgesLength;
+ if (node.dynamicEdges.length > largestHub) {
+ largestHub = node.dynamicEdges.length;
}
- average += node.dynamicEdgesLength;
- averageSquared += Math.pow(node.dynamicEdgesLength,2);
+ average += node.dynamicEdges.length;
+ averageSquared += Math.pow(node.dynamicEdges.length,2);
hubCounter += 1;
}
average = average / hubCounter;
@@ -31398,7 +31730,7 @@ return /******/ (function(modules) { // webpackBootstrap
var reduceAmount = Math.floor(this.nodeIndices.length * fraction);
for (var nodeId in this.nodes) {
if (this.nodes.hasOwnProperty(nodeId)) {
- if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) {
+ if (this.nodes[nodeId].dynamicEdges.length == 2) {
if (reduceAmount > 0) {
this._formClusterFromHub(this.nodes[nodeId],true,true,1);
reduceAmount -= 1;
@@ -31419,7 +31751,7 @@ return /******/ (function(modules) { // webpackBootstrap
var total = 0;
for (var nodeId in this.nodes) {
if (this.nodes.hasOwnProperty(nodeId)) {
- if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) {
+ if (this.nodes[nodeId].dynamicEdges.length == 2) {
chains += 1;
}
total += 1;
@@ -32723,7 +33055,7 @@ return /******/ (function(modules) { // webpackBootstrap
delete this.sectors['support']['nodes']['targetNode'];
delete this.sectors['support']['nodes']['targetViaNode'];
this.controlNodesActive = false;
- this.freezeSimulation = false;
+ this.freezeSimulationEnabled = false;
};
/**
@@ -32792,7 +33124,7 @@ return /******/ (function(modules) { // webpackBootstrap
this._restoreOverloadedFunctions();
// resume calculation
- this.freezeSimulation = false;
+ this.freezeSimulationEnabled = false;
// reset global variables
this.blockConnectingEdgeSelection = false;
@@ -32962,7 +33294,7 @@ return /******/ (function(modules) { // webpackBootstrap
// clear the toolbar
this._clearManipulatorBar();
this._unselectAll(true);
- this.freezeSimulation = true;
+ this.freezeSimulationEnabled = true;
if (this.boundFunction) {
this.off('select', this.boundFunction);
@@ -33009,10 +33341,12 @@ return /******/ (function(modules) { // webpackBootstrap
this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload;
this.cachedFunctions["_handleDragStart"] = this._handleDragStart;
this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd;
+ this.cachedFunctions["_handleOnHold"] = this._handleOnHold;
this._handleTouch = this._handleConnect;
this._manipulationReleaseOverload = function () {};
+ this._handleOnHold = function () {};
this._handleDragStart = function () {};
- this._handleDragEnd = this._finishConnect;
+ this._handleDragEnd = this._finishConnect;
// redraw to show the unselect
this._redraw();
@@ -33091,7 +33425,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y));
if (this.selectedControlNode !== null) {
this.selectedControlNode.select();
- this.freezeSimulation = true;
+ this.freezeSimulationEnabled = true;
}
this._redraw();
};
@@ -33135,7 +33469,7 @@ return /******/ (function(modules) { // webpackBootstrap
else {
this.edgeBeingEdited._restoreControlNodes();
}
- this.freezeSimulation = false;
+ this.freezeSimulationEnabled = false;
this._redraw();
};
@@ -33627,7 +33961,7 @@ return /******/ (function(modules) { // webpackBootstrap
// if the user defined some levels but not all, alert and run without hierarchical layout
if (undefinedLevel == true && definedLevel == true) {
throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");
- this.zoomExtent(undefined,true,this.constants.clustering.enabled);
+ this.zoomExtent({duration:0},true,this.constants.clustering.enabled);
if (!this.constants.clustering.enabled) {
this.start();
}
@@ -33986,6 +34320,19 @@ return /******/ (function(modules) { // webpackBootstrap
/***/ },
/* 67 */
+/***/ function(module, exports, __webpack_require__) {
+
+ function webpackContext(req) {
+ throw new Error("Cannot find module '" + req + "'.");
+ }
+ webpackContext.keys = function() { return []; };
+ webpackContext.resolve = webpackContext;
+ module.exports = webpackContext;
+ webpackContext.id = 67;
+
+
+/***/ },
+/* 68 */
/***/ function(module, exports, __webpack_require__) {
/**
@@ -34055,7 +34402,7 @@ return /******/ (function(modules) { // webpackBootstrap
/***/ },
-/* 68 */
+/* 69 */
/***/ function(module, exports, __webpack_require__) {
/**
@@ -34214,7 +34561,7 @@ return /******/ (function(modules) { // webpackBootstrap
};
/***/ },
-/* 69 */
+/* 70 */
/***/ function(module, exports, __webpack_require__) {
/**
@@ -34618,19 +34965,6 @@ return /******/ (function(modules) { // webpackBootstrap
};
-/***/ },
-/* 70 */
-/***/ function(module, exports, __webpack_require__) {
-
- function webpackContext(req) {
- throw new Error("Cannot find module '" + req + "'.");
- }
- webpackContext.keys = function() { return []; };
- webpackContext.resolve = webpackContext;
- module.exports = webpackContext;
- webpackContext.id = 70;
-
-
/***/ },
/* 71 */
/***/ function(module, exports, __webpack_require__) {
diff --git a/dist/vis.map b/dist/vis.map
index 0052820a..6dff8588 100644
--- a/dist/vis.map
+++ b/dist/vis.map
@@ -1 +1 @@
-{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","RGBToHex","red","green","blue","slice","parseColor","color","isValidRGB","rgb","substr","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","max","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","markDirty","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","boundingBox","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","getBoundingBox","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","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","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","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","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","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","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","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","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","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/vis.min.css b/dist/vis.min.css
index a390c40d..338598a3 100644
--- a/dist/vis.min.css
+++ b/dist/vis.min.css
@@ -1 +1 @@
-.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}.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;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;max-width:100%;overflow:hidden}.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;border-left: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;border: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;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.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 [class*=span]{min-height:0;width:auto}.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;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;max-width:100%;overflow:hidden}.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;border-left: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;border: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;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.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}div.network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid;box-shadow:3px 3px 10px rgba(128,128,128,.5)}
\ No newline at end of file
diff --git a/dist/vis.min.js b/dist/vis.min.js
index 16108e0b..314f8995 100644
--- a/dist/vis.min.js
+++ b/dist/vis.min.js
@@ -4,8 +4,8 @@
*
* A dynamic, browser-based visualization library.
*
- * @version 3.9.1
- * @date 2015-01-22
+ * @version 3.10.0
+ * @date 2015-02-11
*
* @license
* Copyright (C) 2011-2014 Almende B.V, http://almende.com
@@ -22,18 +22,18 @@
*
* Vis.js may be distributed under either license.
*/
-"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.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},e.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},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.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},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.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)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.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)},e.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)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.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 n={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("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.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)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.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)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&r.setAttributeNS(null,"style",s.group.options.drawPoints.styles),r.setAttributeNS(null,"class",s.className+" point"),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:
"+t.point.x+"
y:
"+t.point.y+"
z:
"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);
-break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if("year"==this.scale){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("month"==this.scale)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if("day"==this.scale){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("weekday"==this.scale){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("hour"==this.scale){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if("minute"==this.scale){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if("second"==this.scale)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if("millisecond"==this.scale){var s=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/s)*s)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){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(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);
-for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(25),d=i(30),l=i(31),c=i(22),p=i(23),u=i(24),m=i(21),f="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:m,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,v),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[f];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[f];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[f]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:f},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(25);s.prototype=new r,s.prototype.clear=function(){this.groups={},this.amountOfGroups=0},s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1
-},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var i=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+i+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var s="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(s+=this.groups[e].content+" "));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"white",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0;var o=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.boundingBox.left&&(s=t.boundingBox.left),ot.boundingBox.bottom&&(e=t.boundingBox.top),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;
-for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof f&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj,o=!1;if(void 0==this.popupObj){var n=this.nodes,r=[];for(e in n)if(n.hasOwnProperty(e)){var a=n[e];a.isOverlappingWith(i)&&void 0!==a.getTitle()&&r.push(e)}r.length>0&&(this.popupObj=this.nodes[r[r.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var h=this.edges,d=[];for(e in h)if(h.hasOwnProperty(e)){var l=h[e];l.connected&&void 0!==l.getTitle()&&l.isOverlappingWith(i)&&d.push(e)}d.length>0&&(this.popupObj=this.edges[d[d.length-1]])}if(this.popupObj){if(this.popupObj!=s){var c=this;c.popup||(c.popup=new v(c.frame,c.constants.tooltip)),c.popup.setPosition(t.x-3,t.y-3),c.popup.setText(c.popupObj.getTitle()),c.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(t){var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.width*this.pixelRatio,s=this.frame.canvas.height*this.pixelRatio;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth*this.pixelRatio),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight*this.pixelRatio)},1!=t&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),1!=t&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),1==t&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._redraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.fromBackup=null,this.toBackup=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(40);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","fontStrokeWidth","fontStrokeColor","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor","labelAlignment"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))
-},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;
-var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize),l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var m=this.options.fontSize*h,f=i-c/2,g=s-m/2;"hanging"==n&&(g+=.5*d,g+=4,l+=4),this.labelDimensions={top:g,left:f,width:c,height:m,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(f,g,c,m)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var p=0;h>p;p++)this.options.fontStrokeWidth&&t.strokeText(a[p],i,l),t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i,lineCount:e.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=D.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=D.DELIMITER);var i=E+n();if(C[i])return N=D.DELIMITER,k=i,o(),void o();if(C[E])return N=D.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=D.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=D.IDENTIFIER)}for(N=D.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==D.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=D.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=D.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==D.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=D.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=D.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=D.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";
-return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,S=0;M-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=M>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&F(t),_(this,t),this._d=new Date(+t._d),Di===!1&&(Di=!0,Ce.updateOffset(this),Di=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&I(t[s])!==I(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function I(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function P(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function A(t){return R(t)?366:365}function R(t){return t%4===0&&t%100!==0||t%400===0}function F(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Pe]<1||t._a[Pe]>z(t._a[Ie],t._a[ze])?Pe:t._a[Ae]<0||t._a[Ae]>24||24===t._a[Ae]&&(0!==t._a[Re]||0!==t._a[Fe]||0!==t._a[He])?Ae:t._a[Re]<0||t._a[Re]>59?Re:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Ie>e||e>Pe)&&(e=Pe),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+I(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(I(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=I(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Pe]=I(e));break;case"Do":null!=e&&(o[Pe]=I(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=I(e));break;case"YY":o[Ie]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Ie]=I(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Ae]=I(e);break;case"m":case"mm":o[Re]=I(e);break;case"s":case"ss":o[Fe]=I(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=I(1e3*("0."+e));break;case"x":i._d=new Date(I(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=I(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Ie],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Ie],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Ie]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Pe]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Ie],s[Ie]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Pe]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Ae]&&0===t._a[Re]&&0===t._a[Fe]&&0===t._a[He]&&(t._nextDay=!0,t._a[Ae]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Ae]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Ae]<=12&&(t._pf.bigHour=n),t._a[Ae]=f(t._locale,t._a[Ae],t._meridiem),$(t),F(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return I(this.milliseconds()/100)},SS:function(){return w(I(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+":"+w(I(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+w(I(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Di=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:I(h[Pe])*i,h:I(h[Ae])*i,m:I(h[Re])*i,s:I(h[Fe])*i,ms:I(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)L(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return I(t)+(I(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:D(1,"add"),subtract:D(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return R(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return P(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return P(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*I(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===I(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),De(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.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",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=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?S.startDetect(i,t):t.eventType==_&&S.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=S.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=S.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=S.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=S.current,h=S.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){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;o
Simulation Mode:
Barnes Hut
Repulsion
Hierarchical
Barnes Hut
gravitationalConstant
0
-20000
centralGravity
0
3
springLength
0
500
springConstant
0
0.5
damping
0
0.3
Repulsion
nodeDistance
0
300
centralGravity
0
3
springLength
0
500
springConstant
0
0.5
damping
0
0.3
Hierarchical
nodeDistance
0
300
centralGravity
0
3
springLength
0
500
springConstant
0
0.5
damping
0
0.3
direction
1
4
levelSeparation
1
500
nodeSpacing
1
500
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))
-},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])});
+"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.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},e.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},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.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},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.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)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.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)},e.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)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.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 n={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("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.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)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.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)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&r.setAttributeNS(null,"style",s.group.options.drawPoints.styles),r.setAttributeNS(null,"class",s.className+" point"),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;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],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,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.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var 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.length=0,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.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;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))}this.length+=d.length-c.length,d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:
"+t.point.x+"
y:
"+t.point.y+"
z:
"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t
+},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return u.timeAxis.step.scale},getStep:function(){return u.timeAxis.step.step},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.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{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.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);
+break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){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(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)
+}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},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 c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];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(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];
+e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._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.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items,e.data),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.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({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(59),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;
+var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.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._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),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.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus();var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof f&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj,o=!1;if(void 0==this.popupObj){var n=this.nodes,r=[];for(e in n)if(n.hasOwnProperty(e)){var a=n[e];a.isOverlappingWith(i)&&void 0!==a.getTitle()&&r.push(e)}r.length>0&&(this.popupObj=this.nodes[r[r.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var h=this.edges,d=[];for(e in h)if(h.hasOwnProperty(e)){var l=h[e];l.connected&&void 0!==l.getTitle()&&l.isOverlappingWith(i)&&d.push(e)}d.length>0&&(this.popupObj=this.edges[d[d.length-1]])}if(this.popupObj){if(this.popupObj!=s){var c=this;c.popup||(c.popup=new v(c.frame,c.constants.tooltip)),c.popup.setPosition(t.x-3,t.y-3),c.popup.setText(c.popupObj.getTitle()),c.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var 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++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var 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,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(t){var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},1!=t&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),1!=t&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),1==t&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._redraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))
+},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(){var t=this.options.color;return this.colorDirty===!0&&("to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=t,this.colorDirty=!1),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},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.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},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)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction"];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,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),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 t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)
+},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=D.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=D.DELIMITER);var i=E+n();if(C[i])return N=D.DELIMITER,k=i,o(),void o();if(C[E])return N=D.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=D.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=D.IDENTIFIER)}for(N=D.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==D.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=D.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=D.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==D.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=D.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=D.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=D.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,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(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,S=0;M-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=M>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.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",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=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?S.startDetect(i,t):t.eventType==_&&S.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=S.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=S.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=S.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=S.current,h=S.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 Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Mi[t]||(d(e),Mi[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e
+}function g(){}function v(t,e){e!==!1&&F(t),_(this,t),this._d=new Date(+t._d),Di===!1&&(Di=!0,Ce.updateOffset(this),Di=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function P(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function A(t){return R(t)?366:365}function R(t){return t%4===0&&t%100!==0||t%400===0}function F(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Pe]<1||t._a[Pe]>z(t._a[Le],t._a[ze])?Pe:t._a[Ae]<0||t._a[Ae]>24||24===t._a[Ae]&&(0!==t._a[Re]||0!==t._a[Fe]||0!==t._a[He])?Ae:t._a[Re]<0||t._a[Re]>59?Re:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Pe)&&(e=Pe),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Pe]=L(e));break;case"Do":null!=e&&(o[Pe]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Ae]=L(e);break;case"m":case"mm":o[Re]=L(e);break;case"s":case"ss":o[Fe]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Pe]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Pe]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Ae]&&0===t._a[Re]&&0===t._a[Fe]&&0===t._a[He]&&(t._nextDay=!0,t._a[Ae]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Ae]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Ae]<=12&&(t._pf.bigHour=n),t._a[Ae]=f(t._locale,t._a[Ae],t._meridiem),$(t),F(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Di=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Pe])*i,h:L(h[Ae])*i,m:L(h[Re])*i,s:L(h[Fe])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:D(1,"add"),subtract:D(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return R(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return P(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return P(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)
+}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),De(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;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;o
Simulation Mode:
Barnes Hut
Repulsion
Hierarchical
Barnes Hut
gravitationalConstant
0
-'+t+'
centralGravity
0
3
springLength
0
500
springConstant
0
'+e+'
damping
0
0.3
Repulsion
nodeDistance
0
300
centralGravity
0
3
springLength
0
500
springConstant
0
0.5
damping
0
0.3
Hierarchical
nodeDistance
0
300
centralGravity
0
3
springLength
0
500
springConstant
0
0.5
damping
0
0.3
direction
1
4
levelSeparation
1
500
nodeSpacing
1
500
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 d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.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(),this.forceAggregateHubs(!0),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._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&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,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,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.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)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&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&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.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.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==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){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(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.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,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].dynamicEdges.length&&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].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulationEnabled=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulationEnabled=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulationEnabled=!0,this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulationEnabled=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulationEnabled=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;
+i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])});
//# sourceMappingURL=vis.map
diff --git a/docs/dataset.html b/docs/dataset.html
index d6c2bf81..110afc0a 100644
--- a/docs/dataset.html
+++ b/docs/dataset.html
@@ -21,6 +21,7 @@
+ Get a single item, multiple items, or all items from the DataView.
+ 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.
+
+
+
+
+
+ getDataSet()
+
+
DataSet
+
+ Get the DataSet to which the DataView is connected.
+
+
+
+
+
+ getIds([options])
+
+
Number[]
+
+ Get ids of all items or of a filtered set of items.
+ Available options are described in section Data Selection, except that options fields and type are not applicable in case of getIds.
+
+
+
+
+
off(event, callback)
+
none
+
+ Unsubscribe from an event, remove an event listener. See section Subscriptions.
+
+
+
+
+
on(event, callback)
+
none
+
+ Subscribe to an event, add an event listener. See section Subscriptions.
+
+
+
+
+
refresh()
+
none
+
+ Refresh the filter results of a DataView. Useful when the filter function contains dynamic properties, like:
+
+
var data = new vis.DataSet(...);
+var view = new vis.DataView(data, {
+ filter: function (item) {
+ return item.value > threshold;
+ }
+});
+ In this example, threshold is an external parameter. When the value of threshold changes, the DataView must be notified that the filter results may have changed by calling DataView.refresh().
+
+
+
+
+
+ setDataSet(data)
+
+
none
+
+ Replace the DataSet of the DataView. Parameter data can be a DataSet or a DataView.
+
diff --git a/docs/graph2d.html b/docs/graph2d.html
index df23f03d..bcc03402 100644
--- a/docs/graph2d.html
+++ b/docs/graph2d.html
@@ -737,6 +737,22 @@ The options colored in green can also be used as options for the groups. All opt
If not provided, the earliest date present in the events is taken as start date.
+
+
timeAxis.scale
+
string
+
none
+
Set a fixed scale for the time axis of the Timeline. Choose from 'millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'month', 'year'.
+
+
+
+
timeAxis.step
+
number
+
1
+
+ Set a fixed step size for the time axis. Only applicable when used together with timeAxis.scale.
+ Choose for example 1, 2, 5, or 10.
+
+
width
String
diff --git a/docs/network.html b/docs/network.html
index e4775b41..d1c2e9af 100644
--- a/docs/network.html
+++ b/docs/network.html
@@ -849,6 +849,13 @@ var options = {
inside an object nodes in the networks options object. All options in green boxes can be defined per-node as well.
All options defined per-node override these global settings.
+
+
Name
+
Type
+
Default
+
Description
+
+
borderWidth
Number
@@ -861,6 +868,31 @@ All options defined per-node override these global settings.
undefined
The width of the border of the node when it is selected. If left at undefined, double the borderWidth will be used.
+
+
+
customScalingFunction
+
Function
+
Function
+
This is a function you can override to make the nodes scale the way you want them based on their values. The default function is this:
+
+ The function receives the minimum value of the set, the maximum value, the total sum of all values and finally the value of the node or edge it works on. It has to return a value between 0 and 1.
+ The nodes and edges then calculate their size as follows:
+
@@ -927,6 +959,38 @@ All options defined per-node override these global settings.
14
Font size in pixels for label in the node.
+
+
scaleFontWithValue
+
Boolean
+
false
+
When using values, you can let the font scale with the size of the nodes if you enable the this option.
+
+
+
fontSizeMin
+
Number
+
14
+
When using values, you can let the font scale with the size of the nodes if you enable the scaleFontWithValue option. This is the minimum value of the fontSize.
+
+
+
fontSizeMax
+
Number
+
30
+
When using values, you can let the font scale with the size of the nodes if you enable the scaleFontWithValue option. This is the maximum value of the fontSize.
+
+
+
fontSizeMaxVisible
+
Number
+
30
+
When using values, you can let the font scale with the size of the nodes if you enable the scaleFontWithValue option. If you have a wide distribution of values and have a large max fontSize,
+ the text will become huge if you zoom in on it. This option limits the percieved fontSize to avoid this. If you set it to 20, no label will be larger than fontsize 20 (at scale = 1) regardless of the scale.
+
+
+
fontDrawThreshold
+
Number
+
3
+
When zooming out, the text becomes smaller. This option sets the minimum size of the label before not being drawn. Just like the fontSizeMaxVisible option, this is the relative fontSize (fontSize * scale).
+ You can combine this with the min and max values to have the labels of influential nodes show earlier when zooming in.
+
fontFill
String
@@ -1197,7 +1261,12 @@ var options = {
Possible values: "line-above", "line-center", "line-below". The alignment of the label when drawn on the edge.
If horizontal it will align the label absolute horizontial.
-
+
+
opacity
+
Number
+
1.0
+
Possible values: [0 .. 1]. This opacity value is added on top of the color information. This only happens for the unselected state.
+
style
string
@@ -1727,7 +1796,8 @@ var options = {
radius: 1},
maxNodeSizeIncrements: 600,
activeAreaBoxSize: 100,
- clusterLevelDifference: 2
+ clusterLevelDifference: 2,
+ clusterByZoom: true
}
}
// OR to just load the module with default values:
@@ -1870,6 +1940,12 @@ var options = {
If the highest level of your network at any given time is 3, nodes that have not clustered or
have clustered only once will join their neighbour with the lowest cluster level.
+
+
clusterByZoom
+
Boolean
+
true
+
You can toggle the clustering by zoom level using this option.
This defines the zoomspeed when using the keyboard navigation.
+
+
bindToWindow
+
Boolean
+
true
+
If this is true, global keyboard events will be used. If it is false, the keyboard events are only used when the network is active. It is activated on mouseOver automatically.
+
@@ -2202,11 +2285,18 @@ var options = {
-
getBoundingBox()
+
getBoundingBox(nodeId)
Object
Returns a bounding box for the node including label in the format: {top:Number,left:Number,right:Number,bottom:Number}. These values are in canvas space.
+
+
getConnectedNodes(nodeId)
+
Array
+
Returns an array with nodeIds of nodes that are connected to this node. Network keeps track of the connected nodes so this function allows you
+ to quickly get them without iterating over all edges manually. This is a lot faster for cases with many edges.
+
Calling freezeSimulation(true) immmediately stops the simulation and triggerst the stabilized event. This does not mean that the network
+ is physically stabilized but the nodes are not moving anymore. To continue the simulation call freezeSimulation(false).
+
+
releaseNode()
none
@@ -2322,6 +2419,12 @@ var options = {
nodes with id 3 and 5. The highlisghEdges boolean can be used to automatically select the edges connected to the node.
+
+
getConnectedNodes(nodeId)
+
Array
+
Get an array of (unique) nodeIds that are directly connected to this node.
+
+
selectEdges(selection)
none
@@ -2341,7 +2444,7 @@ var options = {
or in percentages.
-
getPositions([ids])
+
getPositions([nodeIds])
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.
@@ -2363,6 +2466,7 @@ var options = {
options can just be a boolean. When true, the zoom is animated, when false there is no animation.
Alternatively, you can supply an object.
The object can consist of:
+ nodes: [nodeIds] - an optional subset of nodes to zoom in on, duration: Number - the duration of the animation in milliseconds, easingFunction: String - the easing function of the animation, available are: linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic,
@@ -2371,6 +2475,7 @@ var options = {
+
Events
diff --git a/docs/timeline.html b/docs/timeline.html
index 0b910594..59eec23e 100644
--- a/docs/timeline.html
+++ b/docs/timeline.html
@@ -742,6 +742,7 @@ var options = {
showMinorLabels are false, no horizontal axis will be
visible.
+
stack
Boolean
@@ -749,6 +750,16 @@ var options = {
If true (default), items will be stacked on top of each other such that they do not overlap.
+
+
snap
+
function | null
+
function
+
When moving items on the Timeline, they will be snapped to nice dates like full hours or days, depending on the current scale. The snap function can be replaced with a custom function, or can be set to null to disable snapping. The signature of the snap function is:
+
function snap(date: Date, scale: string, step: number) : Date | number
+ The parameter scale can be can be 'millisecond', 'second', 'minute', 'hour', 'weekday, 'day, 'month, or 'year'. The parameter step is a number like 1, 2, 4, 5.
+
+
+
start
Date | Number | String
@@ -764,6 +775,26 @@ var options = {
A template function used to generate the contents of the items. The function is called by the Timeline with an items data as argument, and must return HTML code as result. When the option template is specified, the items do not need to have a field content. See section Templates for a detailed explanation.
+
+
timeAxis.scale
+
string
+
none
+
Set a fixed scale for the time axis of the Timeline. Choose from 'millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'month', 'year'. Example usage:
+
+ Set a fixed step size for the time axis. Only applicable when used together with timeAxis.scale.
+ Choose for example 1, 2, 5, or 10.
+
+
type
String
@@ -921,7 +952,9 @@ timeline.clear({options: true}); // clear options only
redraw()
none
-
Force a redraw of the Timeline. Can be useful to manually redraw when option autoResize=false.
+
Force a redraw of the Timeline. The size of all items will be recalculated.
+ Can be useful to manually redraw when option autoResize=false and the window
+ has been resized, or when the items CSS has been changed.
diff --git a/download/vis.zip b/download/vis.zip
index bbb266b2..d3e9d970 100644
Binary files a/download/vis.zip and b/download/vis.zip differ
diff --git a/examples/network/25_physics_configuration.html b/examples/network/25_physics_configuration.html
index 104040be..1d42c625 100644
--- a/examples/network/25_physics_configuration.html
+++ b/examples/network/25_physics_configuration.html
@@ -78,6 +78,7 @@
};
var options = {
+ edges:{opacity:0.2},
stabilize: false,
configurePhysics:true
};
diff --git a/examples/network/29_neighbourhood_highlight.html b/examples/network/29_neighbourhood_highlight.html
index 783dfb29..09bd570a 100644
--- a/examples/network/29_neighbourhood_highlight.html
+++ b/examples/network/29_neighbourhood_highlight.html
@@ -10027,7 +10027,12 @@ function redrawAll() {
radiusMin: 10,
radiusMax: 30,
fontSize: 12,
- fontFace: "Tahoma"
+ fontFace: "Tahoma",
+ scaleFontWithValue:true,
+ fontSizeMin:8,
+ fontSizeMax:20,
+ fontThreshold:12,
+ fontSizeMaxVisible:20
},
edges: {
width: 0.15,
@@ -10071,8 +10076,6 @@ function onClick(selectedItems) {
}
}
else {
- var allEdges = edges.get();
-
// we clear the level of separation in all nodes.
clearLevelOfSeperation(allNodes);
@@ -10083,7 +10086,7 @@ function onClick(selectedItems) {
// any data can be added to a node, this is just stored in the nodeObject.
storeLevelOfSeperation(connectedNodes,0, allNodes);
for (var i = 1; i < degrees + 1; i++) {
- appendConnectedNodes(connectedNodes, allEdges);
+ appendConnectedNodes(connectedNodes);
storeLevelOfSeperation(connectedNodes, i, allNodes);
}
for (nodeId in allNodes) {
@@ -10153,7 +10156,7 @@ function clearLevelOfSeperation(allNodes) {
*
*
*/
-function appendConnectedNodes(sourceNodes, allEdges) {
+function appendConnectedNodes(sourceNodes) {
var tempSourceNodes = [];
// first we make a copy of the nodes so we do not extend the array we loop over.
for (var i = 0; i < sourceNodes.length; i++) {
@@ -10165,7 +10168,8 @@ function appendConnectedNodes(sourceNodes, allEdges) {
if (sourceNodes.indexOf(nodeId) == -1) {
sourceNodes.push(nodeId);
}
- addUnique(getConnectedNodes(nodeId, allEdges),sourceNodes);
+ var connectedNodes = network.getConnectedNodes(nodeId);
+ addUnique(connectedNodes,sourceNodes);
}
tempSourceNodes = null;
}
@@ -10183,27 +10187,6 @@ function addUnique(fromArray, toArray) {
}
}
-/**
- * Get a list of nodes that are connected to the supplied nodeId with edges.
- * @param nodeId
- * @returns {Array}
- */
-function getConnectedNodes(nodeId, allEdges) {
- var edgesArray = allEdges;
- var connectedNodes = [];
-
- for (var i = 0; i < edgesArray.length; i++) {
- var edge = edgesArray[i];
- if (edge.to == nodeId) {
- connectedNodes.push(edge.from);
- }
- else if (edge.from == nodeId) {
- connectedNodes.push(edge.to)
- }
- }
- return connectedNodes;
-}
-
redrawAll()
diff --git a/examples/timeline/33_custom_snapping.html b/examples/timeline/33_custom_snapping.html
new file mode 100644
index 00000000..53c496ec
--- /dev/null
+++ b/examples/timeline/33_custom_snapping.html
@@ -0,0 +1,54 @@
+
+
+
+ Timeline | Custom snapping
+
+
+
+
+
+
+ When moving the items in on the Timeline below, they will snap to full hours,
+ independent of being zoomed in or out.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/timeline/index.html b/examples/timeline/index.html
index 37912cd4..c21533dc 100644
--- a/examples/timeline/index.html
+++ b/examples/timeline/index.html
@@ -43,6 +43,7 @@