diff --git a/dist/vis.js b/dist/vis.js index a7ef523a..34a883d9 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 4.0.0-SNAPSHOT + * @version 4.0.0 * @date 2015-05-22 * * @license @@ -84,7 +84,7 @@ return /******/ (function(modules) { // webpackBootstrap // utils 'use strict'; - exports.util = __webpack_require__(1); + exports.util = __webpack_require__(57); exports.DOMutil = __webpack_require__(2); // data @@ -115,9 +115,9 @@ return /******/ (function(modules) { // webpackBootstrap components: { items: { - Item: __webpack_require__(20), - BackgroundItem: __webpack_require__(21), - BoxItem: __webpack_require__(22), + Item: __webpack_require__(21), + BackgroundItem: __webpack_require__(22), + BoxItem: __webpack_require__(20), PointItem: __webpack_require__(23), RangeItem: __webpack_require__(24) }, @@ -164,5276 +164,4673 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - // utility functions + 'use strict'; - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. + Object.defineProperty(exports, '__esModule', { + value: true + }); - 'use strict'; + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var moment = __webpack_require__(40); - var uuid = __webpack_require__(42); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - /** - * Test whether given object is a number - * @param {*} object - * @return {Boolean} isNumber - */ - exports.isNumber = function (object) { - return object instanceof Number || typeof object == 'number'; - }; + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - exports.recursiveDOMDelete = function (DOMobject) { - while (DOMobject.hasChildNodes() == true) { - exports.recursiveDOMDelete(DOMobject.firstChild); - DOMobject.removeChild(DOMobject.firstChild); - } - }; + var _componentsNodesCluster = __webpack_require__(85); - /** - * 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); - } - }; + var _componentsNodesCluster2 = _interopRequireDefault(_componentsNodesCluster); - /** - * Test whether given object is a string - * @param {*} object - * @return {Boolean} isString - */ - exports.isString = function (object) { - return object instanceof String || typeof object == 'string'; - }; + var util = __webpack_require__(57); - /** - * Test whether given object is a Date, or a String containing a Date - * @param {Date | String} object - * @return {Boolean} isDate - */ - exports.isDate = function (object) { - if (object instanceof Date) { - return true; - } else if (exports.isString(object)) { - // test whether this string contains a date - var match = ASPDateRegex.exec(object); - if (match) { - return true; - } else if (!isNaN(Date.parse(object))) { - return true; - } - } + var ClusterEngine = (function () { + function ClusterEngine(body) { + var _this = this; - return false; - }; + _classCallCheck(this, ClusterEngine); - /** - * Create a semi UUID - * source: http://stackoverflow.com/a/105074/1262753 - * @return {String} uuid - */ - exports.randomUUID = function () { - return uuid.v4(); - }; + this.body = body; + this.clusteredNodes = {}; - /** - * assign all keys of an object that are not nested objects to a certain value (used for color objects). - * @param obj - * @param value - */ - exports.assignAllKeys = function (obj, value) { - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - if (typeof obj[prop] !== 'object') { - obj[prop] = value; - } - } + this.options = {}; + this.defaultOptions = {}; + util.extend(this.options, this.defaultOptions); + + this.body.emitter.on('_resetData', function () { + _this.clusteredNodes = {}; + }); } - }; - /** - * Fill an object with a possibly partially defined other object. Only copies values if the a object has an object requiring values. - * That means an object is not created on a property if only the b object has it. - * @param obj - * @param value - */ - exports.fillIfDefined = function (a, b) { - var allowDeletion = arguments[2] === undefined ? false : arguments[2]; + _createClass(ClusterEngine, [{ + key: 'setOptions', + value: function setOptions(options) { + if (options !== undefined) {} + } + }, { + key: 'clusterByHubsize', - for (var prop in a) { - if (b[prop] !== undefined) { - if (typeof b[prop] !== 'object') { - if ((b[prop] === undefined || b[prop] === null) && a[prop] !== undefined && allowDeletion === true) { - delete a[prop]; - } else { - a[prop] = b[prop]; - } - } else { - if (typeof a[prop] === 'object') { - exports.fillIfDefined(a[prop], b[prop], allowDeletion); + /** + * + * @param hubsize + * @param options + */ + value: function clusterByHubsize(hubsize, options) { + if (hubsize === undefined) { + hubsize = this._getHubSize(); + } else if (tyepof(hubsize) === 'object') { + options = this._checkOptions(hubsize); + hubsize = this._getHubSize(); + } + + var nodesToCluster = []; + for (var i = 0; i < this.body.nodeIndices.length; i++) { + var node = this.body.nodes[this.body.nodeIndices[i]]; + if (node.edges.length >= hubsize) { + nodesToCluster.push(node.id); } } - } - } - }; - /** - * Extend object a with the properties of object b or a series of objects - * Only properties with defined values are copied - * @param {Object} a - * @param {... Object} b - * @return {Object} a - */ - exports.protoExtend = function (a, b) { - for (var i = 1; i < arguments.length; i++) { - var other = arguments[i]; - for (var prop in other) { - a[prop] = other[prop]; + for (var i = 0; i < nodesToCluster.length; i++) { + this.clusterByConnection(nodesToCluster[i], options, false); + } + this.body.emitter.emit('_dataChanged'); } - } - return a; - }; + }, { + key: 'cluster', - /** - * Extend object a with the properties of object b or a series of objects - * Only properties with defined values are copied - * @param {Object} a - * @param {... Object} b - * @return {Object} a - */ - exports.extend = function (a, b) { - for (var i = 1; i < arguments.length; i++) { - var other = arguments[i]; - for (var prop in other) { - if (other.hasOwnProperty(prop)) { - a[prop] = other[prop]; + /** + * loop over all nodes, check if they adhere to the condition and cluster if needed. + * @param options + * @param refreshData + */ + value: function cluster() { + var options = arguments[0] === undefined ? {} : arguments[0]; + var refreshData = arguments[1] === undefined ? true : arguments[1]; + + if (options.joinCondition === undefined) { + throw new Error('Cannot call clusterByNodeData without a joinCondition function in the options.'); } - } - } - return a; - }; - /** - * Extend object a with selected properties of object b or a series of objects - * Only properties with defined values are copied - * @param {Array.} props - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - exports.selectiveExtend = function (props, a, b) { - if (!Array.isArray(props)) { - throw new Error('Array with property names expected as first argument'); - } + // check if the options object is fine, append if needed + options = this._checkOptions(options); - for (var i = 2; i < arguments.length; i++) { - var other = arguments[i]; + var childNodesObj = {}; + var childEdgesObj = {}; - for (var p = 0; p < props.length; p++) { - var prop = props[p]; - if (other.hasOwnProperty(prop)) { - a[prop] = other[prop]; + // collect the nodes that will be in the cluster + for (var i = 0; i < this.body.nodeIndices.length; i++) { + var nodeId = this.body.nodeIndices[i]; + var node = this.body.nodes[nodeId]; + var clonedOptions = this._cloneOptions(node); + if (options.joinCondition(clonedOptions) === true) { + childNodesObj[nodeId] = this.body.nodes[nodeId]; + + // collect the nodes that will be in the cluster + for (var _i = 0; _i < node.edges.length; _i++) { + var edge = node.edges[_i]; + childEdgesObj[edge.id] = edge; + } + } } + + this._cluster(childNodesObj, childEdgesObj, options, refreshData); } - } - return a; - }; + }, { + key: 'clusterOutliers', - /** - * Extend object a with selected properties of object b or a series of objects - * Only properties with defined values are copied - * @param {Array.} props - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - exports.selectiveDeepExtend = function (props, a, b) { - var allowDeletion = arguments[3] === undefined ? false : arguments[3]; + /** + * Cluster all nodes in the network that have only 1 edge + * @param options + * @param refreshData + */ + value: function clusterOutliers(options) { + var refreshData = arguments[1] === undefined ? true : arguments[1]; - // TODO: add support for Arrays to deepExtend - if (Array.isArray(b)) { - throw new TypeError('Arrays are not supported by deepExtend'); - } - for (var i = 2; i < arguments.length; i++) { - var other = arguments[i]; - for (var p = 0; p < props.length; p++) { - var prop = props[p]; - if (other.hasOwnProperty(prop)) { - if (b[prop] && b[prop].constructor === Object) { - if (a[prop] === undefined) { - a[prop] = {}; + options = this._checkOptions(options); + var clusters = []; + + // collect the nodes that will be in the cluster + for (var i = 0; i < this.body.nodeIndices.length; i++) { + var childNodesObj = {}; + var childEdgesObj = {}; + var nodeId = this.body.nodeIndices[i]; + var visibleEdges = 0; + var edge = undefined; + for (var j = 0; j < this.body.nodes[nodeId].edges.length; j++) { + if (this.body.nodes[nodeId].edges[j].options.hidden === false) { + visibleEdges++; + edge = this.body.nodes[nodeId].edges[j]; } - if (a[prop].constructor === Object) { - exports.deepExtend(a[prop], b[prop], false, allowDeletion); - } else { - if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { - delete a[prop]; + } + + if (visibleEdges === 1) { + // this is an outlier + var childNodeId = this._getConnectedId(edge, nodeId); + if (childNodeId !== nodeId) { + if (options.joinCondition === undefined) { + if (this._checkIfUsed(clusters, nodeId, edge.id) === false && this._checkIfUsed(clusters, childNodeId, edge.id) === false) { + childEdgesObj[edge.id] = edge; + childNodesObj[nodeId] = this.body.nodes[nodeId]; + childNodesObj[childNodeId] = this.body.nodes[childNodeId]; + } } else { - a[prop] = b[prop]; + var clonedOptions = this._cloneOptions(this.body.nodes[nodeId]); + if (options.joinCondition(clonedOptions) === true && this._checkIfUsed(clusters, nodeId, edge.id) === false) { + childEdgesObj[edge.id] = edge; + childNodesObj[nodeId] = this.body.nodes[nodeId]; + } + clonedOptions = this._cloneOptions(this.body.nodes[childNodeId]); + if (options.joinCondition(clonedOptions) === true && this._checkIfUsed(clusters, nodeId, edge.id) === false) { + childEdgesObj[edge.id] = edge; + childNodesObj[childNodeId] = this.body.nodes[childNodeId]; + } + } + + if (Object.keys(childNodesObj).length > 0 && Object.keys(childEdgesObj).length > 0) { + clusters.push({ nodes: childNodesObj, edges: childEdgesObj }); } } - } else if (Array.isArray(b[prop])) { - throw new TypeError('Arrays are not supported by deepExtend'); - } else { - a[prop] = b[prop]; } } + + for (var i = 0; i < clusters.length; i++) { + this._cluster(clusters[i].nodes, clusters[i].edges, options, false); + } + + if (refreshData === true) { + this.body.emitter.emit('_dataChanged'); + } } - } - return a; - }; + }, { + key: '_checkIfUsed', + value: function _checkIfUsed(clusters, nodeId, edgeId) { + for (var i = 0; i < clusters.length; i++) { + var cluster = clusters[i]; + if (cluster.nodes[nodeId] !== undefined || cluster.edges[edgeId] !== undefined) { + return true; + } + } + return false; + } + }, { + key: 'clusterByConnection', - /** - * Extend object a with selected properties of object b or a series of objects - * Only properties with defined values are copied - * @param {Array.} props - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - exports.selectiveNotDeepExtend = function (props, a, b) { - var allowDeletion = arguments[3] === undefined ? false : arguments[3]; + /** + * suck all connected nodes of a node into the node. + * @param nodeId + * @param options + * @param refreshData + */ + value: function clusterByConnection(nodeId, options) { + var refreshData = arguments[2] === undefined ? true : arguments[2]; - // TODO: add support for Arrays to deepExtend - if (Array.isArray(b)) { - throw new TypeError('Arrays are not supported by deepExtend'); - } - for (var prop in b) { - if (b.hasOwnProperty(prop)) { - if (props.indexOf(prop) == -1) { - if (b[prop] && b[prop].constructor === Object) { - if (a[prop] === undefined) { - a[prop] = {}; - } - if (a[prop].constructor === Object) { - exports.deepExtend(a[prop], b[prop]); + // kill conditions + if (nodeId === undefined) { + throw new Error('No nodeId supplied to clusterByConnection!'); + } + if (this.body.nodes[nodeId] === undefined) { + throw new Error('The nodeId given to clusterByConnection does not exist!'); + } + + var node = this.body.nodes[nodeId]; + options = this._checkOptions(options, node); + if (options.clusterNodeProperties.x === undefined) { + options.clusterNodeProperties.x = node.x; + } + if (options.clusterNodeProperties.y === undefined) { + options.clusterNodeProperties.y = node.y; + } + if (options.clusterNodeProperties.fixed === undefined) { + options.clusterNodeProperties.fixed = {}; + options.clusterNodeProperties.fixed.x = node.options.fixed.x; + options.clusterNodeProperties.fixed.y = node.options.fixed.y; + } + + var childNodesObj = {}; + var childEdgesObj = {}; + var parentNodeId = node.id; + var parentClonedOptions = this._cloneOptions(node); + childNodesObj[parentNodeId] = node; + + // collect the nodes that will be in the cluster + for (var i = 0; i < node.edges.length; i++) { + var edge = node.edges[i]; + var childNodeId = this._getConnectedId(edge, parentNodeId); + + if (childNodeId !== parentNodeId) { + if (options.joinCondition === undefined) { + childEdgesObj[edge.id] = edge; + childNodesObj[childNodeId] = this.body.nodes[childNodeId]; } else { - if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { - delete a[prop]; - } else { - a[prop] = b[prop]; + // clone the options and insert some additional parameters that could be interesting. + var childClonedOptions = this._cloneOptions(this.body.nodes[childNodeId]); + if (options.joinCondition(parentClonedOptions, childClonedOptions) === true) { + childEdgesObj[edge.id] = edge; + childNodesObj[childNodeId] = this.body.nodes[childNodeId]; } } - } else if (Array.isArray(b[prop])) { - throw new TypeError('Arrays are not supported by deepExtend'); } else { - a[prop] = b[prop]; + childEdgesObj[edge.id] = edge; } } + + this._cluster(childNodesObj, childEdgesObj, options, refreshData); } - } - return a; - }; + }, { + key: '_cloneOptions', - /** - * Deep extend an object a with the properties of object b - * @param {Object} a - * @param {Object} b - * @param [Boolean] protoExtend --> optional parameter. If true, the prototype values will also be extended. - * (ie. the options objects that inherit from others will also get the inherited options) - * @param [Boolean] global --> optional parameter. If true, the values of fields that are null will not deleted - * @returns {Object} - */ - exports.deepExtend = function (a, b, protoExtend, allowDeletion) { - for (var prop in b) { - if (b.hasOwnProperty(prop) || protoExtend === true) { - if (b[prop] && b[prop].constructor === Object) { - if (a[prop] === undefined) { - a[prop] = {}; - } - if (a[prop].constructor === Object) { - exports.deepExtend(a[prop], b[prop], protoExtend); - } else { - if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { - delete a[prop]; - } else { - a[prop] = b[prop]; - } - } - } else if (Array.isArray(b[prop])) { - a[prop] = []; - for (var i = 0; i < b[prop].length; i++) { - a[prop].push(b[prop][i]); - } + /** + * This returns a clone of the options or options of the edge or node to be used for construction of new edges or check functions for new nodes. + * @param objId + * @param type + * @returns {{}} + * @private + */ + value: function _cloneOptions(item, type) { + var clonedOptions = {}; + if (type === undefined || type === 'node') { + util.deepExtend(clonedOptions, item.options, true); + clonedOptions.x = item.x; + clonedOptions.y = item.y; + clonedOptions.amountOfConnections = item.edges.length; } else { - a[prop] = b[prop]; + util.deepExtend(clonedOptions, item.options, true); } + return clonedOptions; } - } - return a; - }; + }, { + key: '_createClusterEdges', - /** - * Test whether all elements in two arrays are equal. - * @param {Array} a - * @param {Array} b - * @return {boolean} Returns true if both arrays have the same length and same - * elements. - */ - exports.equalArray = function (a, b) { - if (a.length != b.length) return false; + /** + * This function creates the edges that will be attached to the cluster. + * + * @param childNodesObj + * @param childEdgesObj + * @param newEdges + * @param options + * @private + */ + value: function _createClusterEdges(childNodesObj, childEdgesObj, newEdges, clusterNodeProperties, clusterEdgeProperties) { + var edge = undefined, + childNodeId = undefined, + childNode = undefined, + toId = undefined, + fromId = undefined, + otherNodeId = undefined; - for (var i = 0, len = a.length; i < len; i++) { - if (a[i] != b[i]) return false; - } + var childKeys = Object.keys(childNodesObj); + for (var i = 0; i < childKeys.length; i++) { + childNodeId = childKeys[i]; + childNode = childNodesObj[childNodeId]; - return true; - }; + // construct new edges from the cluster to others + for (var j = 0; j < childNode.edges.length; j++) { + edge = childNode.edges[j]; + childEdgesObj[edge.id] = edge; - /** - * Convert an object to another type - * @param {Boolean | Number | String | Date | Moment | Null | undefined} object - * @param {String | undefined} type Name of the type. Available types: - * 'Boolean', 'Number', 'String', - * 'Date', 'Moment', ISODate', 'ASPDate'. - * @return {*} object - * @throws Error - */ - exports.convert = function (object, type) { - var match; + // childNodeId position will be replaced by the cluster. + if (edge.toId == childNodeId) { + // this is a double equals because ints and strings can be interchanged here. + toId = clusterNodeProperties.id; + fromId = edge.fromId; + otherNodeId = fromId; + } else { + toId = edge.toId; + fromId = clusterNodeProperties.id; + otherNodeId = toId; + } - if (object === undefined) { - return undefined; - } - if (object === null) { - return null; - } + // if the node connected to the cluster is also in the cluster we do not need a new edge. + if (childNodesObj[otherNodeId] === undefined) { + var clonedOptions = this._cloneOptions(edge, 'edge'); + util.deepExtend(clonedOptions, clusterEdgeProperties); + clonedOptions.from = fromId; + clonedOptions.to = toId; + clonedOptions.id = 'clusterEdge:' + util.randomUUID(); + newEdges.push(this.body.functions.createEdge(clonedOptions)); + } + } + } + } + }, { + key: '_checkOptions', - if (!type) { - return object; - } - if (!(typeof type === 'string') && !(type instanceof String)) { - throw new Error('Type must be a string'); - } + /** + * This function checks the options that can be supplied to the different cluster functions + * for certain fields and inserts defaults if needed + * @param options + * @returns {*} + * @private + */ + value: function _checkOptions() { + var options = arguments[0] === undefined ? {} : arguments[0]; - //noinspection FallthroughInSwitchStatementJS - switch (type) { - case 'boolean': - case 'Boolean': - return Boolean(object); + if (options.clusterEdgeProperties === undefined) { + options.clusterEdgeProperties = {}; + } + if (options.clusterNodeProperties === undefined) { + options.clusterNodeProperties = {}; + } - case 'number': - case 'Number': - return Number(object.valueOf()); + return options; + } + }, { + key: '_cluster', - case 'string': - case 'String': - return String(object); + /** + * + * @param {Object} childNodesObj | object with node objects, id as keys, same as childNodes except it also contains a source node + * @param {Object} childEdgesObj | object with edge objects, id as keys + * @param {Array} options | object with {clusterNodeProperties, clusterEdgeProperties, processProperties} + * @param {Boolean} refreshData | when true, do not wrap up + * @private + */ + value: function _cluster(childNodesObj, childEdgesObj, options) { + var refreshData = arguments[3] === undefined ? true : arguments[3]; - case 'Date': - if (exports.isNumber(object)) { - return new Date(object); - } - if (object instanceof Date) { - return new Date(object.valueOf()); - } else if (moment.isMoment(object)) { - return new Date(object.valueOf()); + // kill condition: no children so cant cluster + if (Object.keys(childNodesObj).length === 0) { + return; } - if (exports.isString(object)) { - match = ASPDateRegex.exec(object); - if (match) { - // object is an ASP date - return new Date(Number(match[1])); // parse number - } else { - return moment(object).toDate(); // parse string + + var clusterNodeProperties = util.deepExtend({}, options.clusterNodeProperties); + + // construct the clusterNodeProperties + if (options.processProperties !== undefined) { + // get the childNode options + var childNodesOptions = []; + for (var nodeId in childNodesObj) { + var clonedOptions = this._cloneOptions(childNodesObj[nodeId]); + childNodesOptions.push(clonedOptions); + } + + // get clusterproperties based on childNodes + var childEdgesOptions = []; + for (var edgeId in childEdgesObj) { + var clonedOptions = this._cloneOptions(childEdgesObj[edgeId], 'edge'); + childEdgesOptions.push(clonedOptions); + } + + clusterNodeProperties = options.processProperties(clusterNodeProperties, childNodesOptions, childEdgesOptions); + if (!clusterNodeProperties) { + throw new Error('The processProperties function does not return properties!'); } - } else { - throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type Date'); } - case 'Moment': - if (exports.isNumber(object)) { - return moment(object); + // check if we have an unique id; + if (clusterNodeProperties.id === undefined) { + clusterNodeProperties.id = 'cluster:' + util.randomUUID(); } - if (object instanceof Date) { - return moment(object.valueOf()); - } else if (moment.isMoment(object)) { - return moment(object); + var clusterId = clusterNodeProperties.id; + + if (clusterNodeProperties.label === undefined) { + clusterNodeProperties.label = 'cluster'; } - if (exports.isString(object)) { - match = ASPDateRegex.exec(object); - if (match) { - // object is an ASP date - return moment(Number(match[1])); // parse number - } else { - return moment(object); // parse string + + // give the clusterNode a postion if it does not have one. + var pos = undefined; + if (clusterNodeProperties.x === undefined) { + pos = this._getClusterPosition(childNodesObj); + clusterNodeProperties.x = pos.x; + } + if (clusterNodeProperties.y === undefined) { + if (pos === undefined) { + pos = this._getClusterPosition(childNodesObj); } - } else { - throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type Date'); + clusterNodeProperties.y = pos.y; } - case 'ISODate': - if (exports.isNumber(object)) { - return new Date(object); - } else if (object instanceof Date) { - return object.toISOString(); - } else if (moment.isMoment(object)) { - return object.toDate().toISOString(); - } else if (exports.isString(object)) { - match = ASPDateRegex.exec(object); - if (match) { - // object is an ASP date - return new Date(Number(match[1])).toISOString(); // parse number - } else { - return new Date(object).toISOString(); // parse string + // force the ID to remain the same + clusterNodeProperties.id = clusterId; + + // create the clusterNode + var clusterNode = this.body.functions.createNode(clusterNodeProperties, _componentsNodesCluster2['default']); + clusterNode.isCluster = true; + clusterNode.containedNodes = childNodesObj; + clusterNode.containedEdges = childEdgesObj; + // cache a copy from the cluster edge properties if we have to reconnect others later on + clusterNode.clusterEdgeProperties = options.clusterEdgeProperties; + + // finally put the cluster node into global + this.body.nodes[clusterNodeProperties.id] = clusterNode; + + // create the new edges that will connect to the cluster + var newEdges = []; + this._createClusterEdges(childNodesObj, childEdgesObj, newEdges, clusterNodeProperties, options.clusterEdgeProperties); + + // disable the childEdges + for (var edgeId in childEdgesObj) { + if (childEdgesObj.hasOwnProperty(edgeId)) { + if (this.body.edges[edgeId] !== undefined) { + var edge = this.body.edges[edgeId]; + edge.togglePhysics(false); + edge.options.hidden = true; + } } - } else { - throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type ISODate'); } - case 'ASPDate': - if (exports.isNumber(object)) { - return '/Date(' + object + ')/'; - } else if (object instanceof Date) { - return '/Date(' + object.valueOf() + ')/'; - } else if (exports.isString(object)) { - match = ASPDateRegex.exec(object); - var value; - if (match) { - // object is an ASP date - value = new Date(Number(match[1])).valueOf(); // parse number - } else { - value = new Date(object).valueOf(); // parse string + // disable the childNodes + for (var nodeId in childNodesObj) { + if (childNodesObj.hasOwnProperty(nodeId)) { + this.clusteredNodes[nodeId] = { clusterId: clusterNodeProperties.id, node: this.body.nodes[nodeId] }; + this.body.nodes[nodeId].togglePhysics(false); + this.body.nodes[nodeId].options.hidden = true; } - return '/Date(' + value + ')/'; - } else { - throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type ASPDate'); } - default: - throw new Error('Unknown type "' + type + '"'); - } - }; - - // parse ASP.Net Date pattern, - // for example '/Date(1198908717056)/' or '/Date(1198908717056-0700)/' - // code from http://momentjs.com/ - var ASPDateRegex = /^\/?Date\((\-?\d+)/i; + // push new edges to global + for (var i = 0; i < newEdges.length; i++) { + this.body.edges[newEdges[i].id] = newEdges[i]; + this.body.edges[newEdges[i].id].connect(); + } - /** - * Get the type of an object, for example exports.getType([]) returns 'Array' - * @param {*} object - * @return {String} type - */ - exports.getType = function (object) { - var type = typeof object; + // set ID to undefined so no duplicates arise + clusterNodeProperties.id = undefined; - if (type == 'object') { - if (object === null) { - return 'null'; - } - if (object instanceof Boolean) { - return 'Boolean'; - } - if (object instanceof Number) { - return 'Number'; - } - if (object instanceof String) { - return 'String'; - } - if (Array.isArray(object)) { - return 'Array'; + // wrap up + if (refreshData === true) { + this.body.emitter.emit('_dataChanged'); + } } - if (object instanceof Date) { - return 'Date'; + }, { + key: 'isCluster', + + /** + * Check if a node is a cluster. + * @param nodeId + * @returns {*} + */ + value: function isCluster(nodeId) { + if (this.body.nodes[nodeId] !== undefined) { + return this.body.nodes[nodeId].isCluster === true; + } else { + console.log('Node does not exist.'); + return false; + } } - return 'Object'; - } else if (type == 'number') { - return 'Number'; - } else if (type == 'boolean') { - return 'Boolean'; - } else if (type == 'string') { - return 'String'; - } else if (type === undefined) { - return 'undefined'; - } + }, { + key: '_getClusterPosition', - return type; - }; + /** + * get the position of the cluster node based on what's inside + * @param {object} childNodesObj | object with node objects, id as keys + * @returns {{x: number, y: number}} + * @private + */ + value: function _getClusterPosition(childNodesObj) { + var childKeys = Object.keys(childNodesObj); + var minX = childNodesObj[childKeys[0]].x; + var maxX = childNodesObj[childKeys[0]].x; + var minY = childNodesObj[childKeys[0]].y; + var maxY = childNodesObj[childKeys[0]].y; + var node = undefined; + for (var i = 1; i < childKeys.length; i++) { + node = childNodesObj[childKeys[i]]; + minX = node.x < minX ? node.x : minX; + maxX = node.x > maxX ? node.x : maxX; + minY = node.y < minY ? node.y : minY; + maxY = node.y > maxY ? node.y : maxY; + } - /** - * Used to extend an array and copy it. This is used to propagate paths recursively. - * - * @param arr - * @param newValue - * @returns {Array} - */ - exports.copyAndExtendArray = function (arr, newValue) { - var newArr = []; - for (var i = 0; i < arr.length; i++) { - newArr.push(arr[i]); - } - newArr.push(newValue); - return newArr; - }; + return { x: 0.5 * (minX + maxX), y: 0.5 * (minY + maxY) }; + } + }, { + key: 'openCluster', - /** - * Used to extend an array and copy it. This is used to propagate paths recursively. - * - * @param arr - * @param newValue - * @returns {Array} - */ - exports.copyArray = function (arr) { - var newArr = []; - for (var i = 0; i < arr.length; i++) { - newArr.push(arr[i]); - } - return newArr; - }; + /** + * Open a cluster by calling this function. + * @param {String} clusterNodeId | the ID of the cluster node + * @param {Boolean} refreshData | wrap up afterwards if not true + */ + value: function openCluster(clusterNodeId) { + var refreshData = arguments[1] === undefined ? true : arguments[1]; - /** - * Retrieve the absolute left value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {number} left The absolute left position of this element - * in the browser page. - */ - exports.getAbsoluteLeft = function (elem) { - return elem.getBoundingClientRect().left; - }; + // kill conditions + if (clusterNodeId === undefined) { + throw new Error('No clusterNodeId supplied to openCluster.'); + } + if (this.body.nodes[clusterNodeId] === undefined) { + throw new Error('The clusterNodeId supplied to openCluster does not exist.'); + } + if (this.body.nodes[clusterNodeId].containedNodes === undefined) { + console.log('The node:' + clusterNodeId + ' is not a cluster.'); + return; + } + var clusterNode = this.body.nodes[clusterNodeId]; + var containedNodes = clusterNode.containedNodes; + var containedEdges = clusterNode.containedEdges; - /** - * Retrieve the absolute top value of a DOM element - * @param {Element} elem A dom element, for example a div - * @return {number} top The absolute top position of this element - * in the browser page. - */ - exports.getAbsoluteTop = function (elem) { - return elem.getBoundingClientRect().top; - }; + // release nodes + for (var nodeId in containedNodes) { + if (containedNodes.hasOwnProperty(nodeId)) { + var containedNode = this.body.nodes[nodeId]; + containedNode = containedNodes[nodeId]; + // inherit position + containedNode.x = clusterNode.x; + containedNode.y = clusterNode.y; - /** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ - exports.addClassName = function (elem, className) { - var classes = elem.className.split(' '); - if (classes.indexOf(className) == -1) { - classes.push(className); // add the class to the array - elem.className = classes.join(' '); - } - }; + // inherit speed + containedNode.vx = clusterNode.vx; + containedNode.vy = clusterNode.vy; - /** - * add a className to the given elements style - * @param {Element} elem - * @param {String} className - */ - exports.removeClassName = function (elem, className) { - var classes = elem.className.split(' '); - var index = classes.indexOf(className); - if (index != -1) { - classes.splice(index, 1); // remove the class from the array - elem.className = classes.join(' '); - } - }; + containedNode.options.hidden = false; + containedNode.togglePhysics(true); - /** - * For each method for both arrays and objects. - * In case of an array, the built-in Array.forEach() is applied. - * In case of an Object, the method loops over all properties of the object. - * @param {Object | Array} object An Object or Array - * @param {function} callback Callback method, called for each item in - * the object or array with three parameters: - * callback(value, index, object) - */ - exports.forEach = function (object, callback) { - var i, len; - if (Array.isArray(object)) { - // array - for (i = 0, len = object.length; i < len; i++) { - callback(object[i], i, object); - } - } else { - // object - for (i in object) { - if (object.hasOwnProperty(i)) { - callback(object[i], i, object); + delete this.clusteredNodes[nodeId]; + } } - } - } - }; - /** - * Convert an object into an array: all objects properties are put into the - * array. The resulting array is unordered. - * @param {Object} object - * @param {Array} array - */ - exports.toArray = function (object) { - var array = []; + // release edges + for (var edgeId in containedEdges) { + if (containedEdges.hasOwnProperty(edgeId)) { + var edge = containedEdges[edgeId]; + // if this edge was a temporary edge and it's connected nodes do not exist anymore, we remove it from the data + if (this.body.nodes[edge.fromId] === undefined || this.body.nodes[edge.toId] === undefined) { + edge.edgeType.cleanup(); + // this removes the edge from node.edges, which is why edgeIds is formed + edge.disconnect(); + delete this.body.edges[edgeId]; + } else { - for (var prop in object) { - if (object.hasOwnProperty(prop)) array.push(object[prop]); - } + // one of the nodes connected to this edge is in a cluster. We give the edge to that cluster so it will be released when that cluster is opened. + if (this.clusteredNodes[edge.fromId] !== undefined || this.clusteredNodes[edge.toId] !== undefined) { + var fromId = undefined, + toId = undefined; + var clusteredNode = this.clusteredNodes[edge.fromId] || this.clusteredNodes[edge.toId]; + var clusterId = clusteredNode.clusterId; + var _clusterNode = this.body.nodes[clusterId]; + _clusterNode.containedEdges[edgeId] = edge; - return array; - }; + // if both from and to nodes are visible, we create a new temporary edge + if (edge.from.options.hidden !== true && edge.to.options.hidden !== true) { + if (this.clusteredNodes[edge.fromId] !== undefined) { + fromId = clusterId; + toId = edge.toId; + } else { + fromId = edge.fromId; + toId = clusterId; + } - /** - * Update a property in an object - * @param {Object} object - * @param {String} key - * @param {*} value - * @return {Boolean} changed - */ - exports.updateProperty = function (object, key, value) { - if (object[key] !== value) { - object[key] = value; - return true; - } else { - return false; - } - }; - - /** - * Add and event listener. Works for all browsers - * @param {Element} element An html element - * @param {string} action The action, for example "click", - * without the prefix "on" - * @param {function} listener The callback function to be executed - * @param {boolean} [useCapture] - */ - exports.addEventListener = function (element, action, listener, useCapture) { - if (element.addEventListener) { - if (useCapture === undefined) useCapture = false; + var clonedOptions = this._cloneOptions(edge, 'edge'); + var id = 'clusterEdge:' + util.randomUUID(); + util.deepExtend(clonedOptions, _clusterNode.clusterEdgeProperties); + util.deepExtend(clonedOptions, { from: fromId, to: toId, hidden: false, physics: true, id: id }); + var newEdge = this.body.functions.createEdge(clonedOptions); - if (action === 'mousewheel' && navigator.userAgent.indexOf('Firefox') >= 0) { - action = 'DOMMouseScroll'; // For Firefox - } + this.body.edges[id] = newEdge; + this.body.edges[id].connect(); + } + } else { + edge.options.hidden = false; + edge.togglePhysics(true); + } + } + } + } - element.addEventListener(action, listener, useCapture); - } else { - element.attachEvent('on' + action, listener); // IE browsers - } - }; + // remove all temporary edges + for (var i = 0; i < clusterNode.edges.length; i++) { + var edgeId = clusterNode.edges[i].id; + this.body.edges[edgeId].edgeType.cleanup(); + // this removes the edge from node.edges, which is why edgeIds is formed + this.body.edges[edgeId].disconnect(); + delete this.body.edges[edgeId]; + } - /** - * Remove an event listener from an element - * @param {Element} element An html dom element - * @param {string} action The name of the event, for example "mousedown" - * @param {function} listener The listener function - * @param {boolean} [useCapture] - */ - exports.removeEventListener = function (element, action, listener, useCapture) { - if (element.removeEventListener) { - // non-IE browsers - if (useCapture === undefined) useCapture = false; + // remove clusterNode + delete this.body.nodes[clusterNodeId]; - if (action === 'mousewheel' && navigator.userAgent.indexOf('Firefox') >= 0) { - action = 'DOMMouseScroll'; // For Firefox + if (refreshData === true) { + this.body.emitter.emit('_dataChanged'); + } } + }, { + key: '_connectEdge', - element.removeEventListener(action, listener, useCapture); - } else { - // IE browsers - element.detachEvent('on' + action, listener); - } - }; + /** + * Connect an edge that was previously contained from cluster A to cluster B if the node that it was originally connected to + * is currently residing in cluster B + * @param edge + * @param nodeId + * @param from + * @private + */ + value: function _connectEdge(edge, nodeId, from) { + var clusterStack = this.findNode(nodeId); + if (from === true) { + edge.from = clusterStack[clusterStack.length - 1]; + edge.fromId = clusterStack[clusterStack.length - 1].id; + clusterStack.pop(); + edge.fromArray = clusterStack; + } else { + edge.to = clusterStack[clusterStack.length - 1]; + edge.toId = clusterStack[clusterStack.length - 1].id; + clusterStack.pop(); + edge.toArray = clusterStack; + } + edge.connect(); + } + }, { + key: 'findNode', - /** - * Cancels the event if it is cancelable, without stopping further propagation of the event. - */ - exports.preventDefault = function (event) { - if (!event) event = window.event; + /** + * Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node + * @param nodeId + * @returns {Array} + * @private + */ + value: function findNode(nodeId) { + var stack = []; + var max = 100; + var counter = 0; - if (event.preventDefault) { - event.preventDefault(); // non-IE browsers - } else { - event.returnValue = false; // IE browsers - } - }; + while (this.clusteredNodes[nodeId] !== undefined && counter < max) { + stack.push(this.clusteredNodes[nodeId].node); + nodeId = this.clusteredNodes[nodeId].clusterId; + counter++; + } + stack.push(this.body.nodes[nodeId]); + return stack; + } + }, { + key: '_getConnectedId', - /** - * Get HTML element which is the target of the event - * @param {Event} event - * @return {Element} target element - */ - exports.getTarget = function (event) { - // code from http://www.quirksmode.org/js/events_properties.html - if (!event) { - event = window.event; - } + /** + * Get the Id the node is connected to + * @param edge + * @param nodeId + * @returns {*} + * @private + */ + value: function _getConnectedId(edge, nodeId) { + if (edge.toId != nodeId) { + return edge.toId; + } else if (edge.fromId != nodeId) { + return edge.fromId; + } else { + return edge.fromId; + } + } + }, { + key: '_getHubSize', - var target; + /** + * We determine how many connections denote an important hub. + * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) + * + * @private + */ + value: function _getHubSize() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; - if (event.target) { - target = event.target; - } else if (event.srcElement) { - target = event.srcElement; - } + for (var i = 0; i < this.body.nodeIndices.length; i++) { + var node = this.body.nodes[this.body.nodeIndices[i]]; + if (node.edges.length > largestHub) { + largestHub = node.edges.length; + } + average += node.edges.length; + averageSquared += Math.pow(node.edges.length, 2); + hubCounter += 1; + } + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - if (target.nodeType != undefined && target.nodeType == 3) { - // defeat Safari bug - target = target.parentNode; - } + var letiance = averageSquared - Math.pow(average, 2); + var standardDeviation = Math.sqrt(letiance); - return target; - }; + var hubThreshold = Math.floor(average + 2 * standardDeviation); - /** - * Check if given element contains given parent somewhere in the DOM tree - * @param {Element} element - * @param {Element} parent - */ - exports.hasParent = function (element, parent) { - var e = element; + // always have at least one to cluster + if (hubThreshold > largestHub) { + hubThreshold = largestHub; + } - while (e) { - if (e === parent) { - return true; + return hubThreshold; } - e = e.parentNode; - } - - return false; - }; + }]); - exports.option = {}; + return ClusterEngine; + })(); - /** - * Convert a value into a boolean - * @param {Boolean | function | undefined} value - * @param {Boolean} [defaultValue] - * @returns {Boolean} bool - */ - exports.option.asBoolean = function (value, defaultValue) { - if (typeof value == 'function') { - value = value(); - } + exports['default'] = ClusterEngine; + module.exports = exports['default']; - if (value != null) { - return value != false; - } +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { - return defaultValue || null; - }; + // DOM utility methods /** - * Convert a value into a number - * @param {Boolean | function | undefined} value - * @param {Number} [defaultValue] - * @returns {Number} number + * this prepares the JSON container for allocating SVG elements + * @param JSONcontainer + * @private */ - exports.option.asNumber = function (value, defaultValue) { - if (typeof value == 'function') { - value = value(); - } + 'use strict'; - if (value != null) { - return Number(value) || defaultValue || null; + exports.prepareElements = function (JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; + JSONcontainer[elementType].used = []; + } } - - return defaultValue || null; }; /** - * Convert a value into a string - * @param {String | function | undefined} value - * @param {String} [defaultValue] - * @returns {String} str + * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from + * which to remove the redundant elements. + * + * @param JSONcontainer + * @private */ - exports.option.asString = function (value, defaultValue) { - if (typeof value == 'function') { - value = value(); - } - - if (value != null) { - return String(value); + exports.cleanupElements = function (JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + if (JSONcontainer[elementType].redundant) { + for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { + JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); + } + JSONcontainer[elementType].redundant = []; + } + } } - - return defaultValue || null; }; /** - * Convert a size or location into a string with pixels or a percentage - * @param {String | Number | function | undefined} value - * @param {String} [defaultValue] - * @returns {String} size + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param svgContainer + * @returns {*} + * @private */ - exports.option.asSize = function (value, defaultValue) { - if (typeof value == 'function') { - value = value(); - } - - if (exports.isString(value)) { - return value; - } else if (exports.isNumber(value)) { - return value + 'px'; + exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { + var element; + // allocate SVG element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { + // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } else { + // create a new element and add it to the SVG + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + svgContainer.appendChild(element); + } } else { - return defaultValue || null; + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + JSONcontainer[elementType] = { used: [], redundant: [] }; + svgContainer.appendChild(element); } + JSONcontainer[elementType].used.push(element); + return element; }; /** - * Convert a value into a DOM element - * @param {HTMLElement | function | undefined} value - * @param {HTMLElement} [defaultValue] - * @returns {HTMLElement | null} dom + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param DOMContainer + * @returns {*} + * @private */ - exports.option.asElement = function (value, defaultValue) { - if (typeof value == 'function') { - value = value(); + exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { + var element; + // allocate DOM element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { + // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } else { + // create a new element and add it to the SVG + element = document.createElement(elementType); + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } else { + DOMContainer.appendChild(element); + } + } + } else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElement(elementType); + JSONcontainer[elementType] = { used: [], redundant: [] }; + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } else { + DOMContainer.appendChild(element); + } } - - return value || defaultValue || null; + JSONcontainer[elementType].used.push(element); + return element; }; /** - * http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb + * draw a point object. this is a seperate function because it can also be called by the legend. + * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions + * as well. * - * @param {String} hex - * @returns {{r: *, g: *, b: *}} | 255 range - */ - exports.hexToRGB = function (hex) { - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function (m, r, g, b) { - return r + r + g + g + b + b; - }); - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; - }; - - /** - * This function takes color in hex format or rgb() or rgba() format and overrides the opacity. Returns rgba() string. - * @param color - * @param opacity + * @param x + * @param y + * @param group + * @param JSONcontainer + * @param svgContainer + * @param labelObj * @returns {*} */ - exports.overrideOpacity = function (color, opacity) { - if (color.indexOf('rgba') != -1) { - return color; - } else if (color.indexOf('rgb') != -1) { - var rgb = color.substr(color.indexOf('(') + 1).replace(')', '').split(','); - return 'rgba(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ',' + opacity + ')'; + exports.drawPoint = function (x, y, group, JSONcontainer, svgContainer, labelObj) { + var point; + if (group.options.drawPoints.style == 'circle') { + point = exports.getSVGElement('circle', JSONcontainer, svgContainer); + point.setAttributeNS(null, 'cx', x); + point.setAttributeNS(null, 'cy', y); + point.setAttributeNS(null, 'r', 0.5 * group.options.drawPoints.size); } else { - var rgb = exports.hexToRGB(color); - if (rgb == null) { - return color; - } else { - return 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + opacity + ')'; + point = exports.getSVGElement('rect', JSONcontainer, svgContainer); + point.setAttributeNS(null, 'x', x - 0.5 * group.options.drawPoints.size); + point.setAttributeNS(null, 'y', y - 0.5 * group.options.drawPoints.size); + point.setAttributeNS(null, 'width', group.options.drawPoints.size); + point.setAttributeNS(null, 'height', group.options.drawPoints.size); + } + + if (group.options.drawPoints.styles !== undefined) { + point.setAttributeNS(null, 'style', group.group.options.drawPoints.styles); + } + point.setAttributeNS(null, 'class', group.className + ' vis-point'); + //handle label + + if (labelObj) { + var label = exports.getSVGElement('text', JSONcontainer, svgContainer); + if (labelObj.xOffset) { + x = x + labelObj.xOffset; + } + + if (labelObj.yOffset) { + y = y + labelObj.yOffset; + } + if (labelObj.content) { + label.textContent = labelObj.content; + } + + if (labelObj.className) { + label.setAttributeNS(null, 'class', labelObj.className + ' vis-label'); } + label.setAttributeNS(null, 'x', x); + label.setAttributeNS(null, 'y', y); } + + return point; }; /** + * draw a bar SVG element centered on the X coordinate * - * @param red 0 -- 255 - * @param green 0 -- 255 - * @param blue 0 -- 255 - * @returns {string} - * @constructor + * @param x + * @param y + * @param className */ - exports.RGBToHex = function (red, green, blue) { - return '#' + ((1 << 24) + (red << 16) + (green << 8) + blue).toString(16).slice(1); + exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer, style) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } + var rect = exports.getSVGElement('rect', JSONcontainer, svgContainer); + rect.setAttributeNS(null, 'x', x - 0.5 * width); + rect.setAttributeNS(null, 'y', y); + rect.setAttributeNS(null, 'width', width); + rect.setAttributeNS(null, 'height', height); + rect.setAttributeNS(null, 'class', className); + if (style) { + rect.setAttributeNS(null, 'style', style); + } + } }; +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(57); + var Queue = __webpack_require__(5); + /** - * Parse a color property into an object with border, background, and - * highlight colors - * @param {Object | String} color - * @return {Object} colorObject - */ - exports.parseColor = function (color) { - var c; - if (exports.isString(color) === true) { - if (exports.isValidRGB(color) === true) { - var rgb = color.substr(4).substr(0, color.length - 5).split(',').map(function (value) { - return parseInt(value); - }); - color = exports.RGBToHex(rgb[0], rgb[1], rgb[2]); - } - if (exports.isValidHex(color) === true) { - var hsv = exports.hexToHSV(color); - var lighterColorHSV = { h: hsv.h, s: hsv.s * 0.8, v: Math.min(1, hsv.v * 1.02) }; - var darkerColorHSV = { h: hsv.h, s: Math.min(1, hsv.s * 1.25), v: hsv.v * 0.8 }; - var darkerColorHex = exports.HSVToHex(darkerColorHSV.h, darkerColorHSV.s, darkerColorHSV.v); - var lighterColorHex = exports.HSVToHex(lighterColorHSV.h, lighterColorHSV.s, lighterColorHSV.v); - c = { - background: color, - border: darkerColorHex, - highlight: { - background: lighterColorHex, - border: darkerColorHex - }, - hover: { - background: lighterColorHex, - border: darkerColorHex - } - }; - } else { - c = { - background: color, - border: color, - highlight: { - background: color, - border: color - }, - hover: { - background: color, - border: color - } - }; - } - } else { - c = {}; - c.background = color.background || undefined; - c.border = color.border || undefined; - - if (exports.isString(color.highlight)) { - c.highlight = { - border: color.highlight, - background: color.highlight - }; - } else { - c.highlight = {}; - c.highlight.background = color.highlight && color.highlight.background || undefined; - c.highlight.border = color.highlight && color.highlight.border || undefined; - } - - if (exports.isString(color.hover)) { - c.hover = { - border: color.hover, - background: color.hover - }; - } else { - c.hover = {}; - c.hover.background = color.hover && color.hover.background || undefined; - c.hover.border = color.hover && color.hover.border || undefined; - } - } - - return c; - }; - - /** - * http://www.javascripter.net/faq/rgb2hsv.htm + * DataSet * - * @param red - * @param green - * @param blue - * @returns {*} - * @constructor + * Usage: + * var dataSet = new DataSet({ + * fieldId: '_id', + * type: { + * // ... + * } + * }); + * + * dataSet.add(item); + * dataSet.add(data); + * dataSet.update(item); + * dataSet.update(data); + * dataSet.remove(id); + * dataSet.remove(ids); + * var data = dataSet.get(); + * var data = dataSet.get(id); + * var data = dataSet.get(ids); + * var data = dataSet.get(ids, options, data); + * dataSet.clear(); + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * + * @param {Array} [data] Optional array with initial data + * @param {Object} [options] Available options: + * {String} fieldId Field name of the id in the + * items, 'id' by default. + * {Object. increase low - low = middle + 1; + var addOrUpdate = function addOrUpdate(item) { + var id = item[fieldId]; + if (me._data[id]) { + // update item + id = me._updateItem(item); + updatedIds.push(id); + updatedData.push(item); } else { - // it is too big --> decrease high - high = middle - 1; + // add new item + id = me._addItem(item); + addedIds.push(id); } + }; - iteration++; + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + addOrUpdate(data[i]); + } + } else if (data instanceof Object) { + // Single item + addOrUpdate(data); + } else { + throw new Error('Unknown dataType'); } - return -1; + if (addedIds.length) { + this._trigger('add', { items: addedIds }, senderId); + } + if (updatedIds.length) { + this._trigger('update', { items: updatedIds, data: updatedData }, senderId); + } + + return addedIds.concat(updatedIds); }; /** - * This function does a binary search for a specific value in a sorted array. If it does not exist but is in between of - * two values, we return either the one before or the one after, depending on user input - * If it is found, we return the index, else -1. + * Get a data item or multiple items. * - * @param {Array} orderedItems - * @param {{start: number, end: number}} target - * @param {String} field - * @param {String} sidePreference 'before' or 'after' - * @returns {number} - * @private - */ - exports.binarySearchValue = function (orderedItems, target, field, sidePreference) { - var maxIterations = 10000; - var iteration = 0; - var low = 0; - var high = orderedItems.length - 1; - var prevValue, value, nextValue, middle; + * Usage: + * + * get() + * get(options: Object) + * + * get(id: Number | String) + * get(id: Number | String, options: Object) + * + * get(ids: Number[] | String[]) + * get(ids: Number[] | String[], options: Object) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [returnType] Type of data to be returned. + * Can be 'Array' (default) or 'Object'. + * {Object.} [type] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by a field name or custom sort function. + * @throws Error + */ + DataSet.prototype.get = function (args) { + var me = this; - while (low <= high && iteration < maxIterations) { - // get a new guess - middle = Math.floor(0.5 * (high + low)); - prevValue = orderedItems[Math.max(0, middle - 1)][field]; - value = orderedItems[middle][field]; - nextValue = orderedItems[Math.min(orderedItems.length - 1, middle + 1)][field]; + // parse the arguments + var id, ids, options; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number') { + // get(id [, options]) + id = arguments[0]; + options = arguments[1]; + } else if (firstType == 'Array') { + // get(ids [, options]) + ids = arguments[0]; + options = arguments[1]; + } else { + // get([, options]) + options = arguments[0]; + } - if (value == target) { - // we found the target - return middle; - } else if (prevValue < target && value > target) { - // target is in between of the previous and the current - return sidePreference == 'before' ? Math.max(0, middle - 1) : middle; - } else if (value < target && nextValue > target) { - // target is in between of the current and the next - return sidePreference == 'before' ? middle : Math.min(orderedItems.length - 1, middle + 1); + // determine the return type + var returnType; + if (options && options.returnType) { + var allowedValues = ['Array', 'Object']; + returnType = allowedValues.indexOf(options.returnType) == -1 ? 'Array' : options.returnType; + } else { + returnType = 'Array'; + } + + // build options + var type = options && options.type || this._options.type; + var filter = options && options.filter; + var items = [], + item, + itemId, + i, + len; + + // convert items + if (id != undefined) { + // return a single item + item = me._getItem(id, type); + if (filter && !filter(item)) { + item = null; + } + } else if (ids != undefined) { + // return a subset of items + for (i = 0, len = ids.length; i < len; i++) { + item = me._getItem(ids[i], type); + if (!filter || filter(item)) { + items.push(item); + } + } + } else { + // return all items + for (itemId in this._data) { + if (this._data.hasOwnProperty(itemId)) { + item = me._getItem(itemId, type); + if (!filter || filter(item)) { + items.push(item); + } + } + } + } + + // order the results + if (options && options.order && id == undefined) { + this._sort(items, options.order); + } + + // filter fields of the items + if (options && options.fields) { + var fields = options.fields; + if (id != undefined) { + item = this._filterFields(item, fields); } else { - // didnt find the target, we need to change our boundaries. - if (value < target) { - // it is too small --> increase low - low = middle + 1; - } else { - // it is too big --> decrease high - high = middle - 1; + for (i = 0, len = items.length; i < len; i++) { + items[i] = this._filterFields(items[i], fields); } } - iteration++; } - // didnt find anything. Return -1. - return -1; + // return the results + if (returnType == 'Object') { + var result = {}; + for (i = 0; i < items.length; i++) { + result[items[i].id] = items[i]; + } + return result; + } else { + if (id != undefined) { + // a single item + return item; + } else { + // just return our array + return items; + } + } }; - /* - * Easing Functions - inspired from http://gizma.com/easing/ - * only considering the t value for the range [0, 1] => [0, 1] - * https://gist.github.com/gre/1650294 + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids */ - exports.easingFunctions = { - // no easing, no acceleration - linear: function linear(t) { - return t; - }, - // accelerating from zero velocity - easeInQuad: function easeInQuad(t) { - return t * t; - }, - // decelerating to zero velocity - easeOutQuad: function easeOutQuad(t) { - return t * (2 - t); - }, - // acceleration until halfway, then deceleration - easeInOutQuad: function easeInOutQuad(t) { - return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t; - }, - // accelerating from zero velocity - easeInCubic: function easeInCubic(t) { - return t * t * t; - }, - // decelerating to zero velocity - easeOutCubic: function easeOutCubic(t) { - return --t * t * t + 1; - }, - // acceleration until halfway, then deceleration - easeInOutCubic: function easeInOutCubic(t) { - return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; - }, - // accelerating from zero velocity - easeInQuart: function easeInQuart(t) { - return t * t * t * t; - }, - // decelerating to zero velocity - easeOutQuart: function easeOutQuart(t) { - return 1 - --t * t * t * t; - }, - // acceleration until halfway, then deceleration - easeInOutQuart: function easeInOutQuart(t) { - return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t; - }, - // accelerating from zero velocity - easeInQuint: function easeInQuint(t) { - return t * t * t * t * t; - }, - // decelerating to zero velocity - easeOutQuint: function easeOutQuint(t) { - return 1 + --t * t * t * t * t; - }, - // acceleration until halfway, then deceleration - easeInOutQuint: function easeInOutQuint(t) { - return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t; - } - }; + DataSet.prototype.getIds = function (options) { + var data = this._data, + filter = options && options.filter, + order = options && options.order, + type = options && options.type || this._options.type, + i, + len, + id, + item, + items, + ids = []; -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { + if (filter) { + // get filtered items + if (order) { + // create ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + items.push(item); + } + } + } - // DOM utility methods + this._sort(items, order); - /** - * this prepares the JSON container for allocating SVG elements - * @param JSONcontainer - * @private - */ - 'use strict'; + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } + } else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + ids.push(item[this._fieldId]); + } + } + } + } + } else { + // get all items + if (order) { + // create an ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + items.push(data[id]); + } + } - exports.prepareElements = function (JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; - JSONcontainer[elementType].used = []; + this._sort(items, order); + + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } + } else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = data[id]; + ids.push(item[this._fieldId]); + } + } } } + + return ids; }; /** - * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from - * which to remove the redundant elements. - * - * @param JSONcontainer - * @private + * Returns the DataSet itself. Is overwritten for example by the DataView, + * which returns the DataSet it is connected to instead. */ - exports.cleanupElements = function (JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - if (JSONcontainer[elementType].redundant) { - for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { - JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); - } - JSONcontainer[elementType].redundant = []; - } - } - } + DataSet.prototype.getDataSet = function () { + return this; }; /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param svgContainer - * @returns {*} - * @private + * Execute a callback function for every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. */ - exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { - var element; - // allocate SVG element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { - // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } else { - // create a new element and add it to the SVG - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - svgContainer.appendChild(element); + DataSet.prototype.forEach = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + data = this._data, + item, + id; + + if (options && options.order) { + // execute forEach on ordered list + var items = this.get(options); + + for (var i = 0, len = items.length; i < len; i++) { + item = items[i]; + id = item[this._fieldId]; + callback(item, id); } } else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - JSONcontainer[elementType] = { used: [], redundant: [] }; - svgContainer.appendChild(element); + // unordered + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + callback(item, id); + } + } + } } - JSONcontainer[elementType].used.push(element); - return element; }; /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param DOMContainer - * @returns {*} - * @private + * Map every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Object[]} mappedItems */ - exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { - var element; - // allocate DOM element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { - // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } else { - // create a new element and add it to the SVG - element = document.createElement(elementType); - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } else { - DOMContainer.appendChild(element); + DataSet.prototype.map = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + mappedItems = [], + data = this._data, + item; + + // convert and filter items + for (var id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + mappedItems.push(callback(item, id)); } } - } else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElement(elementType); - JSONcontainer[elementType] = { used: [], redundant: [] }; - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } else { - DOMContainer.appendChild(element); - } } - JSONcontainer[elementType].used.push(element); - return element; + + // order items + if (options && options.order) { + this._sort(mappedItems, options.order); + } + + return mappedItems; }; /** - * draw a point object. this is a seperate function because it can also be called by the legend. - * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions - * as well. - * - * @param x - * @param y - * @param group - * @param JSONcontainer - * @param svgContainer - * @param labelObj - * @returns {*} + * Filter the fields of an item + * @param {Object | null} item + * @param {String[]} fields Field names + * @return {Object | null} filteredItem or null if no item is provided + * @private */ - exports.drawPoint = function (x, y, group, JSONcontainer, svgContainer, labelObj) { - var point; - if (group.options.drawPoints.style == 'circle') { - point = exports.getSVGElement('circle', JSONcontainer, svgContainer); - point.setAttributeNS(null, 'cx', x); - point.setAttributeNS(null, 'cy', y); - point.setAttributeNS(null, 'r', 0.5 * group.options.drawPoints.size); - } else { - point = exports.getSVGElement('rect', JSONcontainer, svgContainer); - point.setAttributeNS(null, 'x', x - 0.5 * group.options.drawPoints.size); - point.setAttributeNS(null, 'y', y - 0.5 * group.options.drawPoints.size); - point.setAttributeNS(null, 'width', group.options.drawPoints.size); - point.setAttributeNS(null, 'height', group.options.drawPoints.size); - } - - if (group.options.drawPoints.styles !== undefined) { - point.setAttributeNS(null, 'style', group.group.options.drawPoints.styles); + DataSet.prototype._filterFields = function (item, fields) { + if (!item) { + // item is null + return item; } - point.setAttributeNS(null, 'class', group.className + ' vis-point'); - //handle label - if (labelObj) { - var label = exports.getSVGElement('text', JSONcontainer, svgContainer); - if (labelObj.xOffset) { - x = x + labelObj.xOffset; - } + var filteredItem = {}; - if (labelObj.yOffset) { - y = y + labelObj.yOffset; - } - if (labelObj.content) { - label.textContent = labelObj.content; + if (Array.isArray(fields)) { + for (var field in item) { + if (item.hasOwnProperty(field) && fields.indexOf(field) != -1) { + filteredItem[field] = item[field]; + } } - - if (labelObj.className) { - label.setAttributeNS(null, 'class', labelObj.className + ' vis-label'); + } else { + for (var field in item) { + if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { + filteredItem[fields[field]] = item[field]; + } } - label.setAttributeNS(null, 'x', x); - label.setAttributeNS(null, 'y', y); } - return point; + return filteredItem; }; /** - * draw a bar SVG element centered on the X coordinate - * - * @param x - * @param y - * @param className + * Sort the provided array with items + * @param {Object[]} items + * @param {String | function} order A field name or custom sort function. + * @private */ - exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer, style) { - if (height != 0) { - if (height < 0) { - height *= -1; - y -= height; - } - var rect = exports.getSVGElement('rect', JSONcontainer, svgContainer); - rect.setAttributeNS(null, 'x', x - 0.5 * width); - rect.setAttributeNS(null, 'y', y); - rect.setAttributeNS(null, 'width', width); - rect.setAttributeNS(null, 'height', height); - rect.setAttributeNS(null, 'class', className); - if (style) { - rect.setAttributeNS(null, 'style', style); - } + DataSet.prototype._sort = function (items, order) { + if (util.isString(order)) { + // order by provided field name + var name = order; // field name + items.sort(function (a, b) { + var av = a[name]; + var bv = b[name]; + return av > bv ? 1 : av < bv ? -1 : 0; + }); + } else if (typeof order === 'function') { + // order by sort function + items.sort(order); + } + // TODO: extend order by an Object {field:String, direction:String} + // where direction can be 'asc' or 'desc' + else { + throw new TypeError('Order must be a function or a string'); } }; -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var util = __webpack_require__(1); - var Queue = __webpack_require__(5); - /** - * DataSet - * - * Usage: - * var dataSet = new DataSet({ - * fieldId: '_id', - * type: { - * // ... - * } - * }); - * - * dataSet.add(item); - * dataSet.add(data); - * dataSet.update(item); - * dataSet.update(data); - * dataSet.remove(id); - * dataSet.remove(ids); - * var data = dataSet.get(); - * var data = dataSet.get(id); - * var data = dataSet.get(ids); - * var data = dataSet.get(ids, options, data); - * dataSet.clear(); - * - * A data set can: - * - add/remove/update data - * - gives triggers upon changes in the data - * - can import/export data in various data formats - * - * @param {Array} [data] Optional array with initial data - * @param {Object} [options] Available options: - * {String} fieldId Field name of the id in the - * items, 'id' by default. - * {Object. maxField)) { + max = item; + maxField = itemField; + } + } } - }; - // TODO: remove this deprecated function some day (replaced with `on` since version 0.5, deprecated since v4.0) - DataSet.prototype.unsubscribe = function () { - throw new Error('DataSet.unsubscribe is deprecated. Use DataSet.off instead.'); + return max; }; /** - * Trigger an event - * @param {String} event - * @param {Object | null} params - * @param {String} [senderId] Optional id of the sender. - * @private + * Find the item with minimum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items */ - DataSet.prototype._trigger = function (event, params, senderId) { - if (event == '*') { - throw new Error('Cannot trigger event *'); - } + DataSet.prototype.min = function (field) { + var data = this._data, + min = null, + minField = null; - var subscribers = []; - if (event in this._subscribers) { - subscribers = subscribers.concat(this._subscribers[event]); + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!min || itemField < minField)) { + min = item; + minField = itemField; + } + } } - if ('*' in this._subscribers) { - subscribers = subscribers.concat(this._subscribers['*']); + + return min; + }; + + /** + * Find all distinct values of a specified field + * @param {String} field + * @return {Array} values Array containing all distinct values. If data items + * do not contain the specified field are ignored. + * The returned array is unordered. + */ + DataSet.prototype.distinct = function (field) { + var data = this._data; + var values = []; + var fieldType = this._options.type && this._options.type[field] || null; + var count = 0; + var i; + + for (var prop in data) { + if (data.hasOwnProperty(prop)) { + var item = data[prop]; + var value = item[field]; + var exists = false; + for (i = 0; i < count; i++) { + if (values[i] == value) { + exists = true; + break; + } + } + if (!exists && value !== undefined) { + values[count] = value; + count++; + } + } } - for (var i = 0; i < subscribers.length; i++) { - var subscriber = subscribers[i]; - if (subscriber.callback) { - subscriber.callback(event, params, senderId || null); + if (fieldType) { + for (i = 0; i < values.length; i++) { + values[i] = util.convert(values[i], fieldType); } } + + return values; }; /** - * Add data. - * Adding an item will fail when there already is an item with the same id. - * @param {Object | Array} data - * @param {String} [senderId] Optional sender id - * @return {Array} addedIds Array with the ids of the added items + * Add a single item. Will fail when an item with the same id already exists. + * @param {Object} item + * @return {String} id + * @private */ - DataSet.prototype.add = function (data, senderId) { - var addedIds = [], - id, - me = this; + DataSet.prototype._addItem = function (item) { + var id = item[this._fieldId]; - if (Array.isArray(data)) { - // Array - for (var i = 0, len = data.length; i < len; i++) { - id = me._addItem(data[i]); - addedIds.push(id); + if (id != undefined) { + // check whether this id is already taken + if (this._data[id]) { + // item already exists + throw new Error('Cannot add item: item with id ' + id + ' already exists'); } - } else if (data instanceof Object) { - // Single item - id = me._addItem(data); - addedIds.push(id); } else { - throw new Error('Unknown dataType'); + // generate an id + id = util.randomUUID(); + item[this._fieldId] = id; } - if (addedIds.length) { - this._trigger('add', { items: addedIds }, senderId); + var d = {}; + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } } + this._data[id] = d; + this.length++; - return addedIds; + return id; }; /** - * Update existing items. When an item does not exist, it will be created - * @param {Object | Array} data - * @param {String} [senderId] Optional sender id - * @return {Array} updatedIds The ids of the added or updated items + * Get an item. Fields can be converted to a specific type + * @param {String} id + * @param {Object.} [types] field types to convert + * @return {Object | null} item + * @private */ - DataSet.prototype.update = function (data, senderId) { - var addedIds = []; - var updatedIds = []; - var updatedData = []; - var me = this; - var fieldId = me._fieldId; + DataSet.prototype._getItem = function (id, types) { + var field, value; - var addOrUpdate = function addOrUpdate(item) { - var id = item[fieldId]; - if (me._data[id]) { - // update item - id = me._updateItem(item); - updatedIds.push(id); - updatedData.push(item); - } else { - // add new item - id = me._addItem(item); - addedIds.push(id); - } - }; + // get the item from the dataset + var raw = this._data[id]; + if (!raw) { + return null; + } - if (Array.isArray(data)) { - // Array - for (var i = 0, len = data.length; i < len; i++) { - addOrUpdate(data[i]); + // convert the items field types + var converted = {}; + if (types) { + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = util.convert(value, types[field]); + } } - } else if (data instanceof Object) { - // Single item - addOrUpdate(data); } else { - throw new Error('Unknown dataType'); + // no field types specified, no converting needed + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = value; + } + } } + return converted; + }; - if (addedIds.length) { - this._trigger('add', { items: addedIds }, senderId); + /** + * Update a single item: merge with existing item. + * Will fail when the item has no id, or when there does not exist an item + * with the same id. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._updateItem = function (item) { + var id = item[this._fieldId]; + if (id == undefined) { + throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); } - if (updatedIds.length) { - this._trigger('update', { items: updatedIds, data: updatedData }, senderId); + var d = this._data[id]; + if (!d) { + // item doesn't exist + throw new Error('Cannot update item: no item with id ' + id + ' found'); } - return addedIds.concat(updatedIds); + // merge with current item + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } + + return id; }; + module.exports = DataSet; + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(57); + var DataSet = __webpack_require__(3); + /** - * Get a data item or multiple items. - * - * Usage: - * - * get() - * get(options: Object) - * - * get(id: Number | String) - * get(id: Number | String, options: Object) + * DataView * - * get(ids: Number[] | String[]) - * get(ids: Number[] | String[], options: Object) + * a dataview offers a filtered view on a dataset or an other dataview. * - * Where: + * @param {DataSet | DataView} data + * @param {Object} [options] Available options: see method get * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [returnType] Type of data to be returned. - * Can be 'Array' (default) or 'Object'. - * {Object.} [type] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by a field name or custom sort function. - * @throws Error + * @constructor DataView */ - DataSet.prototype.get = function (args) { + 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 + var me = this; + this.listener = function () { + me._onEvent.apply(me, arguments); + }; - // parse the arguments - var id, ids, options; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number') { - // get(id [, options]) - id = arguments[0]; - options = arguments[1]; - } else if (firstType == 'Array') { - // get(ids [, options]) - ids = arguments[0]; - options = arguments[1]; - } else { - // get([, options]) - options = arguments[0]; - } + this.setData(data); + } - // determine the return type - var returnType; - if (options && options.returnType) { - var allowedValues = ['Array', 'Object']; - returnType = allowedValues.indexOf(options.returnType) == -1 ? 'Array' : options.returnType; - } else { - returnType = 'Array'; - } + // TODO: implement a function .config() to dynamically update things like configured filter + // and trigger changes accordingly - // build options - var type = options && options.type || this._options.type; - var filter = options && options.filter; - var items = [], - item, - itemId, - i, - len; + /** + * Set a data source for the view + * @param {DataSet | DataView} data + */ + DataView.prototype.setData = function (data) { + var ids, i, len; - // convert items - if (id != undefined) { - // return a single item - item = me._getItem(id, type); - if (filter && !filter(item)) { - item = null; - } - } else if (ids != undefined) { - // return a subset of items - for (i = 0, len = ids.length; i < len; i++) { - item = me._getItem(ids[i], type); - if (!filter || filter(item)) { - items.push(item); - } + if (this._data) { + // unsubscribe from current dataset + if (this._data.off) { + this._data.off('*', this.listener); } - } else { - // return all items - for (itemId in this._data) { - if (this._data.hasOwnProperty(itemId)) { - item = me._getItem(itemId, type); - if (!filter || filter(item)) { - items.push(item); - } + + // trigger a remove of all items in memory + ids = []; + for (var id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + ids.push(id); } } + this._ids = {}; + this.length = 0; + this._trigger('remove', { items: ids }); } - // order the results - if (options && options.order && id == undefined) { - this._sort(items, options.order); - } + this._data = data; - // filter fields of the items - if (options && options.fields) { - var fields = options.fields; - if (id != undefined) { - item = this._filterFields(item, fields); - } else { - for (i = 0, len = items.length; i < len; i++) { - items[i] = this._filterFields(items[i], fields); - } - } - } + if (this._data) { + // update fieldId + this._fieldId = this._options.fieldId || this._data && this._data.options && this._data.options.fieldId || 'id'; - // return the results - if (returnType == 'Object') { - var result = {}; - for (i = 0; i < items.length; i++) { - result[items[i].id] = items[i]; + // trigger an add of all added items + ids = this._data.getIds({ filter: this._options && this._options.filter }); + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + this._ids[id] = true; } - return result; - } else { - if (id != undefined) { - // a single item - return item; - } else { - // just return our array - return items; + this.length = ids.length; + this._trigger('add', { items: ids }); + + // subscribe to new dataset + if (this._data.on) { + this._data.on('*', this.listener); } } }; /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Refresh the DataView. Useful when the DataView has a filter function + * containing a variable parameter. */ - DataSet.prototype.getIds = function (options) { - var data = this._data, - filter = options && options.filter, - order = options && options.order, - type = options && options.type || this._options.type, - i, - len, - id, - item, - items, - ids = []; - - if (filter) { - // get filtered items - if (order) { - // create ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - items.push(item); - } - } - } - - this._sort(items, order); + DataView.prototype.refresh = function () { + var id; + var ids = this._data.getIds({ filter: this._options && this._options.filter }); + var newIds = {}; + var added = []; + var removed = []; - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - ids.push(item[this._fieldId]); - } - } - } + // 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++; } - } else { - // get all items - if (order) { - // create an ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - items.push(data[id]); - } - } - - this._sort(items, order); + } - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = data[id]; - ids.push(item[this._fieldId]); - } + // 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--; } } } - return ids; - }; - - /** - * Returns the DataSet itself. Is overwritten for example by the DataView, - * which returns the DataSet it is connected to instead. - */ - DataSet.prototype.getDataSet = function () { - return this; + // trigger events + if (added.length) { + this._trigger('add', { items: added }); + } + if (removed.length) { + this._trigger('remove', { items: removed }); + } }; /** - * Execute a callback function for every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields + * Get data from the data view + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number) + * get(id: Number, options: Object) + * get(id: Number, options: Object, data: Array | DataTable) + * + * get(ids: Number[]) + * get(ids: Number[], options: Object) + * get(ids: Number[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [type] Type of data to be returned. Can + * be 'DataTable' or 'Array' (default) + * {Object.} [convert] + * {String[]} [fields] field names to be returned * {function} [filter] filter items * {String | function} [order] Order the items by * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * @param args */ - DataSet.prototype.forEach = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - data = this._data, - item, - id; - - if (options && options.order) { - // execute forEach on ordered list - var items = this.get(options); + DataView.prototype.get = function (args) { + var me = this; - for (var i = 0, len = items.length; i < len; i++) { - item = items[i]; - id = item[this._fieldId]; - callback(item, id); - } + // parse the arguments + var ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { + // get(id(s) [, options] [, data]) + ids = arguments[0]; // can be a single id or an array with ids + options = arguments[1]; + data = arguments[2]; } else { - // unordered - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - callback(item, id); - } - } - } + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; } - }; - /** - * Map every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Object[]} mappedItems - */ - DataSet.prototype.map = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - mappedItems = [], - data = this._data, - item; + // extend the options with the default options and provided options + var viewOptions = util.extend({}, this._options, options); - // convert and filter items - for (var id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - mappedItems.push(callback(item, id)); - } - } + // create a combined filter method when needed + if (this._options.filter && options && options.filter) { + viewOptions.filter = function (item) { + return me._options.filter(item) && options.filter(item); + }; } - // order items - if (options && options.order) { - this._sort(mappedItems, options.order); + // build up the call to the linked data set + var getArguments = []; + if (ids != undefined) { + getArguments.push(ids); } + getArguments.push(viewOptions); + getArguments.push(data); - return mappedItems; + return this._data && this._data.get.apply(this._data, getArguments); }; /** - * Filter the fields of an item - * @param {Object | null} item - * @param {String[]} fields Field names - * @return {Object | null} filteredItem or null if no item is provided - * @private + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids */ - DataSet.prototype._filterFields = function (item, fields) { - if (!item) { - // item is null - return item; - } + DataView.prototype.getIds = function (options) { + var ids; - var filteredItem = {}; + if (this._data) { + var defaultFilter = this._options.filter; + var filter; - if (Array.isArray(fields)) { - for (var field in item) { - if (item.hasOwnProperty(field) && fields.indexOf(field) != -1) { - filteredItem[field] = item[field]; + if (options && options.filter) { + if (defaultFilter) { + filter = function (item) { + return defaultFilter(item) && options.filter(item); + }; + } else { + filter = options.filter; } + } else { + filter = defaultFilter; } + + ids = this._data.getIds({ + filter: filter, + order: options && options.order + }); } else { - for (var field in item) { - if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { - filteredItem[fields[field]] = item[field]; - } - } + ids = []; } - return filteredItem; + return ids; }; /** - * Sort the provided array with items - * @param {Object[]} items - * @param {String | function} order A field name or custom sort function. - * @private + * Get the DataSet to which this DataView is connected. In case there is a chain + * of multiple DataViews, the root DataSet of this chain is returned. + * @return {DataSet} dataSet */ - DataSet.prototype._sort = function (items, order) { - if (util.isString(order)) { - // order by provided field name - var name = order; // field name - items.sort(function (a, b) { - var av = a[name]; - var bv = b[name]; - return av > bv ? 1 : av < bv ? -1 : 0; - }); - } else if (typeof order === 'function') { - // order by sort function - items.sort(order); - } - // TODO: extend order by an Object {field:String, direction:String} - // where direction can be 'asc' or 'desc' - else { - throw new TypeError('Order must be a function or a string'); + DataView.prototype.getDataSet = function () { + var dataSet = this; + while (dataSet instanceof DataView) { + dataSet = dataSet._data; } + return dataSet || null; }; /** - * Remove an object by pointer or by id - * @param {String | Number | Object | Array} id Object or id, or an array with - * objects or ids to be removed - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds + * Event listener. Will propagate all events from the connected data set to + * the subscribers of the DataView, but will filter the items and only trigger + * when there are changes in the filtered data set. + * @param {String} event + * @param {Object | null} params + * @param {String} senderId + * @private */ - DataSet.prototype.remove = function (id, senderId) { - var removedIds = [], - i, - len, - removedId; + DataView.prototype._onEvent = function (event, params, senderId) { + var i, len, id, item; + var ids = params && params.items; + var data = this._data; + var updatedData = []; + var added = []; + var updated = []; + var removed = []; - if (Array.isArray(id)) { - for (i = 0, len = id.length; i < len; i++) { - removedId = this._remove(id[i]); - if (removedId != null) { - removedIds.push(removedId); - } + if (ids && data) { + switch (event) { + case 'add': + // filter the ids of the added items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + if (item) { + this._ids[id] = true; + added.push(id); + } + } + + break; + + case 'update': + // determine the event from the views viewpoint: an updated + // item can be added, updated, or removed from this view. + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + + if (item) { + if (this._ids[id]) { + updated.push(id); + updatedData.push(params.data[i]); + } else { + this._ids[id] = true; + added.push(id); + } + } else { + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } else {} + } + } + + break; + + case 'remove': + // filter the ids of the removed items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } + } + + break; } - } else { - removedId = this._remove(id); - if (removedId != null) { - removedIds.push(removedId); + + this.length += added.length - removed.length; + + if (added.length) { + this._trigger('add', { items: added }, senderId); + } + if (updated.length) { + this._trigger('update', { items: updated, data: updatedData }, senderId); + } + if (removed.length) { + this._trigger('remove', { items: removed }, senderId); } } + }; - if (removedIds.length) { - this._trigger('remove', { items: removedIds }, senderId); - } + // copy subscription functionality from DataSet + DataView.prototype.on = DataSet.prototype.on; + DataView.prototype.off = DataSet.prototype.off; + DataView.prototype._trigger = DataSet.prototype._trigger; - return removedIds; - }; + // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) + DataView.prototype.subscribe = DataView.prototype.on; + DataView.prototype.unsubscribe = DataView.prototype.off; - /** - * Remove an item by its id - * @param {Number | String | Object} id id or item - * @returns {Number | String | null} id - * @private - */ - DataSet.prototype._remove = function (id) { - if (util.isNumber(id) || util.isString(id)) { - if (this._data[id]) { - delete this._data[id]; - this.length--; - return id; - } - } else if (id instanceof Object) { - var itemId = id[this._fieldId]; - if (itemId && this._data[itemId]) { - delete this._data[itemId]; - this.length--; - return itemId; - } - } - return null; - }; + module.exports = DataView; + + // nothing interesting for me :-( + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { /** - * Clear the data - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds The ids of all removed items + * A queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @constructor */ - DataSet.prototype.clear = function (senderId) { - var ids = Object.keys(this._data); + 'use strict'; - this._data = {}; - this.length = 0; + function Queue(options) { + // options + this.delay = null; + this.max = Infinity; - this._trigger('remove', { items: ids }, senderId); + // properties + this._queue = []; + this._timeout = null; + this._extended = null; - return ids; - }; + this.setOptions(options); + } /** - * Find the item with maximum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items + * Update the configuration of the queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @param options */ - DataSet.prototype.max = function (field) { - var data = this._data, - max = null, - maxField = null; - - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!max || itemField > maxField)) { - max = item; - maxField = itemField; - } - } + Queue.prototype.setOptions = function (options) { + if (options && typeof options.delay !== 'undefined') { + this.delay = options.delay; + } + if (options && typeof options.max !== 'undefined') { + this.max = options.max; } - return max; + this._flushIfNeeded(); }; /** - * Find the item with minimum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items + * Extend an object with queuing functionality. + * The object will be extended with a function flush, and the methods provided + * in options.replace will be replaced with queued ones. + * @param {Object} object + * @param {Object} options + * Available options: + * - replace: Array. + * A list with method names of the methods + * on the object to be replaced with queued ones. + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @return {Queue} Returns the created queue */ - DataSet.prototype.min = function (field) { - var data = this._data, - min = null, - minField = null; + Queue.extend = function (object, options) { + var queue = new Queue(options); - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!min || itemField < minField)) { - min = item; - minField = itemField; - } + if (object.flush !== undefined) { + throw new Error('Target object already has a property flush'); + } + object.flush = function () { + queue.flush(); + }; + + var methods = [{ + name: 'flush', + original: undefined + }]; + + if (options && options.replace) { + for (var i = 0; i < options.replace.length; i++) { + var name = options.replace[i]; + methods.push({ + name: name, + original: object[name] + }); + queue.replace(object, name); } } - return min; + queue._extended = { + object: object, + methods: methods + }; + + return queue; }; /** - * Find all distinct values of a specified field - * @param {String} field - * @return {Array} values Array containing all distinct values. If data items - * do not contain the specified field are ignored. - * The returned array is unordered. + * Destroy the queue. The queue will first flush all queued actions, and in + * case it has extended an object, will restore the original object. */ - DataSet.prototype.distinct = function (field) { - var data = this._data; - var values = []; - var fieldType = this._options.type && this._options.type[field] || null; - var count = 0; - var i; + Queue.prototype.destroy = function () { + this.flush(); - for (var prop in data) { - if (data.hasOwnProperty(prop)) { - var item = data[prop]; - var value = item[field]; - var exists = false; - for (i = 0; i < count; i++) { - if (values[i] == value) { - exists = true; - break; - } - } - if (!exists && value !== undefined) { - values[count] = value; - count++; + if (this._extended) { + var object = this._extended.object; + var methods = this._extended.methods; + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + if (method.original) { + object[method.name] = method.original; + } else { + delete object[method.name]; } } + this._extended = null; } - - if (fieldType) { - for (i = 0; i < values.length; i++) { - values[i] = util.convert(values[i], fieldType); - } - } - - return values; }; /** - * Add a single item. Will fail when an item with the same id already exists. - * @param {Object} item - * @return {String} id - * @private + * Replace a method on an object with a queued version + * @param {Object} object Object having the method + * @param {string} method The method name */ - DataSet.prototype._addItem = function (item) { - var id = item[this._fieldId]; - - if (id != undefined) { - // check whether this id is already taken - if (this._data[id]) { - // item already exists - throw new Error('Cannot add item: item with id ' + id + ' already exists'); - } - } else { - // generate an id - id = util.randomUUID(); - item[this._fieldId] = id; + Queue.prototype.replace = function (object, method) { + var me = this; + var original = object[method]; + if (!original) { + throw new Error('Method ' + method + ' undefined'); } - var d = {}; - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); + object[method] = function () { + // create an Array with the arguments + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; } - } - this._data[id] = d; - this.length++; - return id; + // add this call to the queue + me.queue({ + args: args, + fn: original, + context: this + }); + }; }; /** - * Get an item. Fields can be converted to a specific type - * @param {String} id - * @param {Object.} [types] field types to convert - * @return {Object | null} item - * @private + * Queue a call + * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry */ - DataSet.prototype._getItem = function (id, types) { - var field, value; - - // get the item from the dataset - var raw = this._data[id]; - if (!raw) { - return null; - } - - // convert the items field types - var converted = {}; - if (types) { - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = util.convert(value, types[field]); - } - } + Queue.prototype.queue = function (entry) { + if (typeof entry === 'function') { + this._queue.push({ fn: entry }); } else { - // no field types specified, no converting needed - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = value; - } - } + this._queue.push(entry); } - return converted; + + this._flushIfNeeded(); }; /** - * Update a single item: merge with existing item. - * Will fail when the item has no id, or when there does not exist an item - * with the same id. - * @param {Object} item - * @return {String} id + * Check whether the queue needs to be flushed * @private */ - DataSet.prototype._updateItem = function (item) { - var id = item[this._fieldId]; - if (id == undefined) { - throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); - } - var d = this._data[id]; - if (!d) { - // item doesn't exist - throw new Error('Cannot update item: no item with id ' + id + ' found'); + Queue.prototype._flushIfNeeded = function () { + // flush when the maximum is exceeded. + if (this._queue.length > this.max) { + this.flush(); } - // merge with current item - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } + // flush after a period of inactivity when a delay is configured + clearTimeout(this._timeout); + if (this.queue.length > 0 && typeof this.delay === 'number') { + var me = this; + this._timeout = setTimeout(function () { + me.flush(); + }, this.delay); } + }; - return id; + /** + * Flush all queued calls + */ + Queue.prototype.flush = function () { + while (this._queue.length > 0) { + var entry = this._queue.shift(); + entry.fn.apply(entry.context || entry.fn, entry.args || []); + } }; - module.exports = DataSet; + module.exports = Queue; /***/ }, -/* 4 */ +/* 6 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(1); + var Emitter = __webpack_require__(69); var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var util = __webpack_require__(57); + var Point3d = __webpack_require__(10); + var Point2d = __webpack_require__(9); + var Camera = __webpack_require__(7); + var Filter = __webpack_require__(8); + var Slider = __webpack_require__(11); + var StepNumber = __webpack_require__(12); /** - * DataView - * - * a dataview offers a filtered view on a dataset or an other dataview. + * @constructor Graph3d + * Graph3d displays data in 3d. * - * @param {DataSet | DataView} data - * @param {Object} [options] Available options: see method get + * Graph3d is developed in javascript as a Google Visualization Chart. * - * @constructor DataView + * @param {Element} container The DOM element in which the Graph3d will + * be created. Normally a div element. + * @param {DataSet | DataView | Array} [data] + * @param {Object} [options] */ - 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 + function Graph3d(container, data, options) { + if (!(this instanceof Graph3d)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - var me = this; - this.listener = function () { - me._onEvent.apply(me, arguments); + // create variables and set default values + this.containerElement = container; + this.width = '400px'; + this.height = '400px'; + this.margin = 10; // px + this.defaultXCenter = '55%'; + this.defaultYCenter = '50%'; + + this.xLabel = 'x'; + this.yLabel = 'y'; + this.zLabel = 'z'; + + var passValueFn = function passValueFn(v) { + return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; - this.setData(data); + this.filterLabel = 'time'; + this.legendLabel = 'value'; + + this.style = Graph3d.STYLE.DOT; + this.showPerspective = true; + this.showGrid = true; + this.keepAspectRatio = true; + this.showShadow = false; + this.showGrayBottom = false; // TODO: this does not work correctly + this.showTooltip = false; + this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' + + this.animationInterval = 1000; // milliseconds + this.animationPreload = false; + + this.camera = new Camera(); + this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? + + this.dataTable = null; // The original data table + this.dataPoints = null; // The table with point objects + + // the column indexes + this.colX = undefined; + this.colY = undefined; + this.colZ = undefined; + this.colValue = undefined; + this.colFilter = undefined; + + this.xMin = 0; + this.xStep = undefined; // auto by default + this.xMax = 1; + this.yMin = 0; + this.yStep = undefined; // auto by default + this.yMax = 1; + this.zMin = 0; + this.zStep = undefined; // auto by default + this.zMax = 1; + this.valueMin = 0; + this.valueMax = 1; + this.xBarWidth = 1; + this.yBarWidth = 1; + // TODO: customize axis range + + // constants + this.colorAxis = '#4D4D4D'; + this.colorGrid = '#D3D3D3'; + this.colorDot = '#7DC1FF'; + this.colorDotBorder = '#3267D2'; + + // create a frame and canvas + this.create(); + + // apply options (also when undefined) + this.setOptions(options); + + // apply data + if (data) { + this.setData(data); + } } - // TODO: implement a function .config() to dynamically update things like configured filter - // and trigger changes accordingly + // Extend Graph3d with an Emitter mixin + Emitter(Graph3d.prototype); /** - * Set a data source for the view - * @param {DataSet | DataView} data + * Calculate the scaling values, dependent on the range in x, y, and z direction */ - DataView.prototype.setData = function (data) { - var ids, i, len; - - if (this._data) { - // unsubscribe from current dataset - if (this._data.off) { - this._data.off('*', this.listener); - } + Graph3d.prototype._setScale = function () { + this.scale = new Point3d(1 / (this.xMax - this.xMin), 1 / (this.yMax - this.yMin), 1 / (this.zMax - this.zMin)); - // trigger a remove of all items in memory - ids = []; - for (var id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - ids.push(id); - } + // keep aspect ration between x and y scale if desired + if (this.keepAspectRatio) { + if (this.scale.x < this.scale.y) { + //noinspection JSSuspiciousNameCombination + this.scale.y = this.scale.x; + } else { + //noinspection JSSuspiciousNameCombination + this.scale.x = this.scale.y; } - this._ids = {}; - this.length = 0; - this._trigger('remove', { items: ids }); } - this._data = data; - - if (this._data) { - // update fieldId - this._fieldId = this._options.fieldId || this._data && this._data.options && this._data.options.fieldId || 'id'; + // scale the vertical axis + this.scale.z *= this.verticalRatio; + // TODO: can this be automated? verticalRatio? - // trigger an add of all added items - ids = this._data.getIds({ filter: this._options && this._options.filter }); - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - this._ids[id] = true; - } - this.length = ids.length; - this._trigger('add', { items: ids }); + // determine scale for (optional) value + this.scale.value = 1 / (this.valueMax - this.valueMin); - // subscribe to new dataset - if (this._data.on) { - this._data.on('*', this.listener); - } - } + // position the camera arm + var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; + var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; + var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; + this.camera.setArmLocation(xCenter, yCenter, zCenter); }; /** - * Refresh the DataView. Useful when the DataView has a filter function - * containing a variable parameter. + * Convert a 3D location to a 2D location on screen + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point2d} point2d A 2D point with parameters x, y */ - DataView.prototype.refresh = function () { - var id; - var ids = this._data.getIds({ filter: this._options && this._options.filter }); - var newIds = {}; - var added = []; - var removed = []; + Graph3d.prototype._convert3Dto2D = function (point3d) { + var translation = this._convertPointToTranslation(point3d); + return this._convertTranslationToScreen(translation); + }; - // 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++; - } - } + /** + * Convert a 3D location its translation seen from the camera + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + */ + Graph3d.prototype._convertPointToTranslation = function (point3d) { + var ax = point3d.x * this.scale.x, + ay = point3d.y * this.scale.y, + az = point3d.z * this.scale.z, + cx = this.camera.getCameraLocation().x, + cy = this.camera.getCameraLocation().y, + cz = this.camera.getCameraLocation().z, - // 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--; - } - } - } + // calculate angles + sinTx = Math.sin(this.camera.getCameraRotation().x), + cosTx = Math.cos(this.camera.getCameraRotation().x), + sinTy = Math.sin(this.camera.getCameraRotation().y), + cosTy = Math.cos(this.camera.getCameraRotation().y), + sinTz = Math.sin(this.camera.getCameraRotation().z), + cosTz = Math.cos(this.camera.getCameraRotation().z), - // trigger events - if (added.length) { - this._trigger('add', { items: added }); - } - if (removed.length) { - this._trigger('remove', { items: removed }); - } + // calculate translation + dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), + dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax - cx)), + dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax - cx)); + + return new Point3d(dx, dy, dz); }; /** - * Get data from the data view - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number) - * get(id: Number, options: Object) - * get(id: Number, options: Object, data: Array | DataTable) - * - * get(ids: Number[]) - * get(ids: Number[], options: Object) - * get(ids: Number[], options: Object, data: Array | DataTable) - * - * Where: - * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [type] Type of data to be returned. Can - * be 'DataTable' or 'Array' (default) - * {Object.} [convert] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * @param args + * Convert a translation point to a point on the screen + * @param {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + * @return {Point2d} point2d A 2D point with parameters x, y */ - DataView.prototype.get = function (args) { - var me = this; + Graph3d.prototype._convertTranslationToScreen = function (translation) { + var ex = this.eye.x, + ey = this.eye.y, + ez = this.eye.z, + dx = translation.x, + dy = translation.y, + dz = translation.z; - // parse the arguments - var ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { - // get(id(s) [, options] [, data]) - ids = arguments[0]; // can be a single id or an array with ids - options = arguments[1]; - data = arguments[2]; + // calculate position on screen from translation + var bx; + var by; + if (this.showPerspective) { + bx = (dx - ex) * (ez / dz); + by = (dy - ey) * (ez / dz); } else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; + bx = dx * -(ez / this.camera.getArmLength()); + by = dy * -(ez / this.camera.getArmLength()); } - // extend the options with the default options and provided options - var viewOptions = util.extend({}, this._options, options); + // shift and scale the point to the center of the screen + // use the width of the graph to scale both horizontally and vertically. + return new Point2d(this.xcenter + bx * this.frame.canvas.clientWidth, this.ycenter - by * this.frame.canvas.clientWidth); + }; - // create a combined filter method when needed - if (this._options.filter && options && options.filter) { - viewOptions.filter = function (item) { - return me._options.filter(item) && options.filter(item); - }; - } + /** + * Set the background styling for the graph + * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + */ + Graph3d.prototype._setBackgroundColor = function (backgroundColor) { + var fill = 'white'; + var stroke = 'gray'; + var strokeWidth = 1; - // build up the call to the linked data set - var getArguments = []; - if (ids != undefined) { - getArguments.push(ids); + if (typeof backgroundColor === 'string') { + fill = backgroundColor; + stroke = 'none'; + strokeWidth = 0; + } else if (typeof backgroundColor === 'object') { + if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; + if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; + if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; + } else if (backgroundColor === undefined) {} else { + throw 'Unsupported type of backgroundColor'; } - getArguments.push(viewOptions); - getArguments.push(data); - return this._data && this._data.get.apply(this._data, getArguments); + this.frame.style.backgroundColor = fill; + this.frame.style.borderColor = stroke; + this.frame.style.borderWidth = strokeWidth + 'px'; + this.frame.style.borderStyle = 'solid'; + }; + + /// enumerate the available styles + Graph3d.STYLE = { + BAR: 0, + BARCOLOR: 1, + BARSIZE: 2, + DOT: 3, + DOTLINE: 4, + DOTCOLOR: 5, + DOTSIZE: 6, + GRID: 7, + LINE: 8, + SURFACE: 9 }; /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Retrieve the style index from given styleName + * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' + * @return {Number} styleNumber Enumeration value representing the style, or -1 + * when not found */ - DataView.prototype.getIds = function (options) { - var ids; + Graph3d.prototype._getStyleNumber = function (styleName) { + switch (styleName) { + case 'dot': + return Graph3d.STYLE.DOT; + case 'dot-line': + return Graph3d.STYLE.DOTLINE; + case 'dot-color': + return Graph3d.STYLE.DOTCOLOR; + case 'dot-size': + return Graph3d.STYLE.DOTSIZE; + case 'line': + return Graph3d.STYLE.LINE; + case 'grid': + return Graph3d.STYLE.GRID; + case 'surface': + return Graph3d.STYLE.SURFACE; + case 'bar': + return Graph3d.STYLE.BAR; + case 'bar-color': + return Graph3d.STYLE.BARCOLOR; + case 'bar-size': + return Graph3d.STYLE.BARSIZE; + } - if (this._data) { - var defaultFilter = this._options.filter; - var filter; + return -1; + }; - if (options && options.filter) { - if (defaultFilter) { - filter = function (item) { - return defaultFilter(item) && options.filter(item); - }; - } else { - filter = options.filter; - } - } else { - filter = defaultFilter; + /** + * Determine the indexes of the data columns, based on the given style and data + * @param {DataSet} data + * @param {Number} style + */ + Graph3d.prototype._determineColumnIndexes = function (data, style) { + if (this.style === Graph3d.STYLE.DOT || this.style === Graph3d.STYLE.DOTLINE || this.style === Graph3d.STYLE.LINE || this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE || this.style === Graph3d.STYLE.BAR) { + // 3 columns expected, and optionally a 4th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = undefined; + + if (data.getNumberOfColumns() > 3) { + this.colFilter = 3; } + } else if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { + // 4 columns expected, and optionally a 5th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = 3; - ids = this._data.getIds({ - filter: filter, - order: options && options.order - }); + if (data.getNumberOfColumns() > 4) { + this.colFilter = 4; + } } else { - ids = []; + throw 'Unknown style "' + this.style + '"'; } + }; - return ids; + Graph3d.prototype.getNumberOfRows = function (data) { + return data.length; }; - /** - * Get the DataSet to which this DataView is connected. In case there is a chain - * of multiple DataViews, the root DataSet of this chain is returned. - * @return {DataSet} dataSet - */ - DataView.prototype.getDataSet = function () { - var dataSet = this; - while (dataSet instanceof DataView) { - dataSet = dataSet._data; + Graph3d.prototype.getNumberOfColumns = function (data) { + var counter = 0; + for (var column in data[0]) { + if (data[0].hasOwnProperty(column)) { + counter++; + } } - return dataSet || null; + return counter; + }; + + Graph3d.prototype.getDistinctValues = function (data, column) { + var distinctValues = []; + for (var i = 0; i < data.length; i++) { + if (distinctValues.indexOf(data[i][column]) == -1) { + distinctValues.push(data[i][column]); + } + } + return distinctValues; + }; + + Graph3d.prototype.getColumnRange = function (data, column) { + var minMax = { min: data[0][column], max: data[0][column] }; + for (var i = 0; i < data.length; i++) { + if (minMax.min > data[i][column]) { + minMax.min = data[i][column]; + } + if (minMax.max < data[i][column]) { + minMax.max = data[i][column]; + } + } + return minMax; }; /** - * Event listener. Will propagate all events from the connected data set to - * the subscribers of the DataView, but will filter the items and only trigger - * when there are changes in the filtered data set. - * @param {String} event - * @param {Object | null} params - * @param {String} senderId - * @private + * Initialize the data from the data table. Calculate minimum and maximum values + * and column index values + * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. + * @param {Number} style Style Number */ - DataView.prototype._onEvent = function (event, params, senderId) { - var i, len, id, item; - var ids = params && params.items; - var data = this._data; - var updatedData = []; - var added = []; - var updated = []; - var removed = []; + Graph3d.prototype._dataInitialize = function (rawData, style) { + var me = this; - if (ids && data) { - switch (event) { - case 'add': - // filter the ids of the added items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - if (item) { - this._ids[id] = true; - added.push(id); - } - } + // unsubscribe from the dataTable + if (this.dataSet) { + this.dataSet.off('*', this._onChange); + } - break; + if (rawData === undefined) return; - case 'update': - // determine the event from the views viewpoint: an updated - // item can be added, updated, or removed from this view. - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); + if (Array.isArray(rawData)) { + rawData = new DataSet(rawData); + } - if (item) { - if (this._ids[id]) { - updated.push(id); - updatedData.push(params.data[i]); - } else { - this._ids[id] = true; - added.push(id); - } - } else { - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } else {} - } - } + var data; + if (rawData instanceof DataSet || rawData instanceof DataView) { + data = rawData.get(); + } else { + throw new Error('Array, DataSet, or DataView expected'); + } - break; + if (data.length == 0) return; - case 'remove': - // filter the ids of the removed items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - } + this.dataSet = rawData; + this.dataTable = data; - break; - } + // subscribe to changes in the dataset + this._onChange = function () { + me.setData(me.dataSet); + }; + this.dataSet.on('*', this._onChange); - this.length += added.length - removed.length; + // _determineColumnIndexes + // getNumberOfRows (points) + // getNumberOfColumns (x,y,z,v,t,t1,t2...) + // getDistinctValues (unique values?) + // getColumnRange - if (added.length) { - this._trigger('add', { items: added }, senderId); + // determine the location of x,y,z,value,filter columns + this.colX = 'x'; + this.colY = 'y'; + this.colZ = 'z'; + this.colValue = 'style'; + this.colFilter = 'filter'; + + // check if a filter column is provided + if (data[0].hasOwnProperty('filter')) { + if (this.dataFilter === undefined) { + this.dataFilter = new Filter(rawData, this.colFilter, this); + this.dataFilter.setOnLoadCallback(function () { + me.redraw(); + }); } - if (updated.length) { - this._trigger('update', { items: updated, data: updatedData }, senderId); + } + + var withBars = this.style == Graph3d.STYLE.BAR || this.style == Graph3d.STYLE.BARCOLOR || this.style == Graph3d.STYLE.BARSIZE; + + // determine barWidth from data + if (withBars) { + if (this.defaultXBarWidth !== undefined) { + this.xBarWidth = this.defaultXBarWidth; + } else { + var dataX = this.getDistinctValues(data, this.colX); + this.xBarWidth = dataX[1] - dataX[0] || 1; } - if (removed.length) { - this._trigger('remove', { items: removed }, senderId); + + if (this.defaultYBarWidth !== undefined) { + this.yBarWidth = this.defaultYBarWidth; + } else { + var dataY = this.getDistinctValues(data, this.colY); + this.yBarWidth = dataY[1] - dataY[0] || 1; } } - }; - // copy subscription functionality from DataSet - DataView.prototype.on = DataSet.prototype.on; - DataView.prototype.off = DataSet.prototype.off; - DataView.prototype._trigger = DataSet.prototype._trigger; + // calculate minimums and maximums + var xRange = this.getColumnRange(data, this.colX); + if (withBars) { + xRange.min -= this.xBarWidth / 2; + xRange.max += this.xBarWidth / 2; + } + this.xMin = this.defaultXMin !== undefined ? this.defaultXMin : xRange.min; + this.xMax = this.defaultXMax !== undefined ? this.defaultXMax : xRange.max; + if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; + this.xStep = this.defaultXStep !== undefined ? this.defaultXStep : (this.xMax - this.xMin) / 5; - // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) - DataView.prototype.subscribe = DataView.prototype.on; - DataView.prototype.unsubscribe = DataView.prototype.off; + var yRange = this.getColumnRange(data, this.colY); + if (withBars) { + yRange.min -= this.yBarWidth / 2; + yRange.max += this.yBarWidth / 2; + } + this.yMin = this.defaultYMin !== undefined ? this.defaultYMin : yRange.min; + this.yMax = this.defaultYMax !== undefined ? this.defaultYMax : yRange.max; + if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; + this.yStep = this.defaultYStep !== undefined ? this.defaultYStep : (this.yMax - this.yMin) / 5; - module.exports = DataView; + var zRange = this.getColumnRange(data, this.colZ); + this.zMin = this.defaultZMin !== undefined ? this.defaultZMin : zRange.min; + this.zMax = this.defaultZMax !== undefined ? this.defaultZMax : zRange.max; + if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; + this.zStep = this.defaultZStep !== undefined ? this.defaultZStep : (this.zMax - this.zMin) / 5; - // nothing interesting for me :-( + if (this.colValue !== undefined) { + var valueRange = this.getColumnRange(data, this.colValue); + this.valueMin = this.defaultValueMin !== undefined ? this.defaultValueMin : valueRange.min; + this.valueMax = this.defaultValueMax !== undefined ? this.defaultValueMax : valueRange.max; + if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; + } -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { + // set the scale dependent on the ranges. + this._setScale(); + }; /** - * A queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @constructor + * Filter the data based on the current filter + * @param {Array} data + * @return {Array} dataPoints Array with point objects which can be drawn on screen */ - 'use strict'; + Graph3d.prototype._getDataPoints = function (data) { + // TODO: store the created matrix dataPoints in the filters instead of reloading each time + var x, y, i, z, obj, point; - function Queue(options) { - // options - this.delay = null; - this.max = Infinity; + var dataPoints = []; - // properties - this._queue = []; - this._timeout = null; - this._extended = null; + if (this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE) { + // copy all values from the google data table to a matrix + // the provided values are supposed to form a grid of (x,y) positions - this.setOptions(options); - } + // create two lists with all present x and y values + var dataX = []; + var dataY = []; + for (i = 0; i < this.getNumberOfRows(data); i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; - /** - * Update the configuration of the queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @param options - */ - Queue.prototype.setOptions = function (options) { - if (options && typeof options.delay !== 'undefined') { - this.delay = options.delay; - } - if (options && typeof options.max !== 'undefined') { - this.max = options.max; + if (dataX.indexOf(x) === -1) { + dataX.push(x); + } + if (dataY.indexOf(y) === -1) { + dataY.push(y); + } + } + + var sortNumber = function sortNumber(a, b) { + return a - b; + }; + dataX.sort(sortNumber); + dataY.sort(sortNumber); + + // create a grid, a 2d matrix, with all values. + var dataMatrix = []; // temporary data matrix + for (i = 0; i < data.length; i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; + z = data[i][this.colZ] || 0; + + var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer + var yIndex = dataY.indexOf(y); + + if (dataMatrix[xIndex] === undefined) { + dataMatrix[xIndex] = []; + } + + var point3d = new Point3d(); + point3d.x = x; + point3d.y = y; + point3d.z = z; + + obj = {}; + obj.point = point3d; + obj.trans = undefined; + obj.screen = undefined; + obj.bottom = new Point3d(x, y, this.zMin); + + dataMatrix[xIndex][yIndex] = obj; + + dataPoints.push(obj); + } + + // fill in the pointers to the neighbors. + for (x = 0; x < dataMatrix.length; x++) { + for (y = 0; y < dataMatrix[x].length; y++) { + if (dataMatrix[x][y]) { + dataMatrix[x][y].pointRight = x < dataMatrix.length - 1 ? dataMatrix[x + 1][y] : undefined; + dataMatrix[x][y].pointTop = y < dataMatrix[x].length - 1 ? dataMatrix[x][y + 1] : undefined; + dataMatrix[x][y].pointCross = x < dataMatrix.length - 1 && y < dataMatrix[x].length - 1 ? dataMatrix[x + 1][y + 1] : undefined; + } + } + } + } else { + // 'dot', 'dot-line', etc. + // copy all values from the google data table to a list with Point3d objects + for (i = 0; i < data.length; i++) { + point = new Point3d(); + point.x = data[i][this.colX] || 0; + point.y = data[i][this.colY] || 0; + point.z = data[i][this.colZ] || 0; + + if (this.colValue !== undefined) { + point.value = data[i][this.colValue] || 0; + } + + obj = {}; + obj.point = point; + obj.bottom = new Point3d(point.x, point.y, this.zMin); + obj.trans = undefined; + obj.screen = undefined; + + dataPoints.push(obj); + } } - this._flushIfNeeded(); + return dataPoints; }; /** - * Extend an object with queuing functionality. - * The object will be extended with a function flush, and the methods provided - * in options.replace will be replaced with queued ones. - * @param {Object} object - * @param {Object} options - * Available options: - * - replace: Array. - * A list with method names of the methods - * on the object to be replaced with queued ones. - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @return {Queue} Returns the created queue + * Create the main frame for the Graph3d. + * This function is executed once when a Graph3d object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. */ - Queue.extend = function (object, options) { - var queue = new Queue(options); - - if (object.flush !== undefined) { - throw new Error('Target object already has a property flush'); + Graph3d.prototype.create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); } - object.flush = function () { - queue.flush(); - }; - var methods = [{ - name: 'flush', - original: undefined - }]; + this.frame = document.createElement('div'); + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; - if (options && options.replace) { - for (var i = 0; i < options.replace.length; i++) { - var name = options.replace[i]; - methods.push({ - name: name, - original: object[name] - }); - queue.replace(object, name); - } + // create the graph canvas (HTML canvas element) + this.frame.canvas = document.createElement('canvas'); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); + //if (!this.frame.canvas.getContext) { + { + var noCanvas = document.createElement('DIV'); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold'; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); } - queue._extended = { - object: object, - methods: methods + this.frame.filter = document.createElement('div'); + this.frame.filter.style.position = 'absolute'; + this.frame.filter.style.bottom = '0px'; + this.frame.filter.style.left = '0px'; + this.frame.filter.style.width = '100%'; + this.frame.appendChild(this.frame.filter); + + // add event listeners to handle moving and zooming the contents + var me = this; + var onmousedown = function onmousedown(event) { + me._onMouseDown(event); + }; + var ontouchstart = function ontouchstart(event) { + me._onTouchStart(event); }; + var onmousewheel = function onmousewheel(event) { + me._onWheel(event); + }; + var ontooltip = function ontooltip(event) { + me._onTooltip(event); + }; + // TODO: these events are never cleaned up... can give a 'memory leakage' - return queue; + util.addEventListener(this.frame.canvas, 'keydown', onkeydown); + util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); + util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); + util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); + util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); + + // add the new graph to the container element + this.containerElement.appendChild(this.frame); }; /** - * Destroy the queue. The queue will first flush all queued actions, and in - * case it has extended an object, will restore the original object. + * Set a new size for the graph + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') */ - Queue.prototype.destroy = function () { - this.flush(); + Graph3d.prototype.setSize = function (width, height) { + this.frame.style.width = width; + this.frame.style.height = height; - if (this._extended) { - var object = this._extended.object; - var methods = this._extended.methods; - for (var i = 0; i < methods.length; i++) { - var method = methods[i]; - if (method.original) { - object[method.name] = method.original; - } else { - delete object[method.name]; - } - } - this._extended = null; - } + this._resizeCanvas(); }; /** - * Replace a method on an object with a queued version - * @param {Object} object Object having the method - * @param {string} method The method name + * Resize the canvas to the current size of the frame */ - Queue.prototype.replace = function (object, method) { - var me = this; - var original = object[method]; - if (!original) { - throw new Error('Method ' + method + ' undefined'); - } + Graph3d.prototype._resizeCanvas = function () { + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - object[method] = function () { - // create an Array with the arguments - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } + this.frame.canvas.width = this.frame.canvas.clientWidth; + this.frame.canvas.height = this.frame.canvas.clientHeight; - // add this call to the queue - me.queue({ - args: args, - fn: original, - context: this - }); - }; + // adjust with for margin + this.frame.filter.style.width = this.frame.canvas.clientWidth - 2 * 10 + 'px'; }; /** - * Queue a call - * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry + * Start animation */ - Queue.prototype.queue = function (entry) { - if (typeof entry === 'function') { - this._queue.push({ fn: entry }); - } else { - this._queue.push(entry); - } + Graph3d.prototype.animationStart = function () { + if (!this.frame.filter || !this.frame.filter.slider) throw 'No animation available'; - this._flushIfNeeded(); + this.frame.filter.slider.play(); }; /** - * Check whether the queue needs to be flushed - * @private + * Stop animation */ - Queue.prototype._flushIfNeeded = function () { - // flush when the maximum is exceeded. - if (this._queue.length > this.max) { - this.flush(); + Graph3d.prototype.animationStop = function () { + if (!this.frame.filter || !this.frame.filter.slider) return; + + this.frame.filter.slider.stop(); + }; + + /** + * Resize the center position based on the current values in this.defaultXCenter + * and this.defaultYCenter (which are strings with a percentage or a value + * in pixels). The center positions are the variables this.xCenter + * and this.yCenter + */ + Graph3d.prototype._resizeCenter = function () { + // calculate the horizontal center position + if (this.defaultXCenter.charAt(this.defaultXCenter.length - 1) === '%') { + this.xcenter = parseFloat(this.defaultXCenter) / 100 * this.frame.canvas.clientWidth; + } else { + this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px } - // flush after a period of inactivity when a delay is configured - clearTimeout(this._timeout); - if (this.queue.length > 0 && typeof this.delay === 'number') { - var me = this; - this._timeout = setTimeout(function () { - me.flush(); - }, this.delay); + // calculate the vertical center position + if (this.defaultYCenter.charAt(this.defaultYCenter.length - 1) === '%') { + this.ycenter = parseFloat(this.defaultYCenter) / 100 * (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); + } else { + this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px } }; /** - * Flush all queued calls + * Set the rotation and distance of the camera + * @param {Object} pos An object with the camera position. The object + * contains three parameters: + * - horizontal {Number} + * The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * - vertical {Number} + * The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. + * - distance {Number} + * The (normalized) distance of the camera to the + * center of the graph, a value between 0.71 and 5.0. + * Optional, can be left undefined. */ - Queue.prototype.flush = function () { - while (this._queue.length > 0) { - var entry = this._queue.shift(); - entry.fn.apply(entry.context || entry.fn, entry.args || []); + Graph3d.prototype.setCameraPosition = function (pos) { + if (pos === undefined) { + return; } - }; - module.exports = Queue; + if (pos.horizontal !== undefined && pos.vertical !== undefined) { + this.camera.setArmRotation(pos.horizontal, pos.vertical); + } -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { + if (pos.distance !== undefined) { + this.camera.setArmLength(pos.distance); + } - 'use strict'; + this.redraw(); + }; - var Emitter = __webpack_require__(69); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var util = __webpack_require__(1); - var Point3d = __webpack_require__(10); - var Point2d = __webpack_require__(9); - var Camera = __webpack_require__(7); - var Filter = __webpack_require__(8); - var Slider = __webpack_require__(11); - var StepNumber = __webpack_require__(12); + /** + * Retrieve the current camera rotation + * @return {object} An object with parameters horizontal, vertical, and + * distance + */ + Graph3d.prototype.getCameraPosition = function () { + var pos = this.camera.getArmRotation(); + pos.distance = this.camera.getArmLength(); + return pos; + }; /** - * @constructor Graph3d - * Graph3d displays data in 3d. - * - * Graph3d is developed in javascript as a Google Visualization Chart. - * - * @param {Element} container The DOM element in which the Graph3d will - * be created. Normally a div element. - * @param {DataSet | DataView | Array} [data] - * @param {Object} [options] + * Load data into the 3D Graph */ - function Graph3d(container, data, options) { - if (!(this instanceof Graph3d)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } + Graph3d.prototype._readData = function (data) { + // read the data + this._dataInitialize(data, this.style); - // create variables and set default values - this.containerElement = container; - this.width = '400px'; - this.height = '400px'; - this.margin = 10; // px - this.defaultXCenter = '55%'; - this.defaultYCenter = '50%'; + if (this.dataFilter) { + // apply filtering + this.dataPoints = this.dataFilter._getDataPoints(); + } else { + // no filtering. load all data + this.dataPoints = this._getDataPoints(this.dataTable); + } - this.xLabel = 'x'; - this.yLabel = 'y'; - this.zLabel = 'z'; + // draw the filter + this._redrawFilter(); + }; - var passValueFn = function passValueFn(v) { - return v; - }; - this.xValueLabel = passValueFn; - this.yValueLabel = passValueFn; - this.zValueLabel = passValueFn; + /** + * Replace the dataset of the Graph3d + * @param {Array | DataSet | DataView} data + */ + Graph3d.prototype.setData = function (data) { + this._readData(data); + this.redraw(); - this.filterLabel = 'time'; - this.legendLabel = 'value'; + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } + }; - this.style = Graph3d.STYLE.DOT; - this.showPerspective = true; - this.showGrid = true; - this.keepAspectRatio = true; - this.showShadow = false; - this.showGrayBottom = false; // TODO: this does not work correctly - this.showTooltip = false; - this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' + /** + * Update the options. Options will be merged with current options + * @param {Object} options + */ + Graph3d.prototype.setOptions = function (options) { + var cameraPosition = undefined; - this.animationInterval = 1000; // milliseconds - this.animationPreload = false; + this.animationStop(); - this.camera = new Camera(); - this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? + if (options !== undefined) { + // retrieve parameter values + if (options.width !== undefined) this.width = options.width; + if (options.height !== undefined) this.height = options.height; - this.dataTable = null; // The original data table - this.dataPoints = null; // The table with point objects + if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; + if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; - // the column indexes - this.colX = undefined; - this.colY = undefined; - this.colZ = undefined; - this.colValue = undefined; - this.colFilter = undefined; + if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; + if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; + if (options.xLabel !== undefined) this.xLabel = options.xLabel; + if (options.yLabel !== undefined) this.yLabel = options.yLabel; + if (options.zLabel !== undefined) this.zLabel = options.zLabel; - this.xMin = 0; - this.xStep = undefined; // auto by default - this.xMax = 1; - this.yMin = 0; - this.yStep = undefined; // auto by default - this.yMax = 1; - this.zMin = 0; - this.zStep = undefined; // auto by default - this.zMax = 1; - this.valueMin = 0; - this.valueMax = 1; - this.xBarWidth = 1; - this.yBarWidth = 1; - // TODO: customize axis range + if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; + if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; - // constants - this.colorAxis = '#4D4D4D'; - this.colorGrid = '#D3D3D3'; - this.colorDot = '#7DC1FF'; - this.colorDotBorder = '#3267D2'; + if (options.style !== undefined) { + var styleNumber = this._getStyleNumber(options.style); + if (styleNumber !== -1) { + this.style = styleNumber; + } + } + if (options.showGrid !== undefined) this.showGrid = options.showGrid; + if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; + if (options.showShadow !== undefined) this.showShadow = options.showShadow; + if (options.tooltip !== undefined) this.showTooltip = options.tooltip; + if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; + if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; + if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; - // create a frame and canvas - this.create(); + if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; + if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; + if (options.animationAutoStart !== undefined) this.animationAutoStart = options.animationAutoStart; - // apply options (also when undefined) - this.setOptions(options); + if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; + if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; - // apply data - if (data) { - this.setData(data); - } - } - - // Extend Graph3d with an Emitter mixin - Emitter(Graph3d.prototype); + if (options.xMin !== undefined) this.defaultXMin = options.xMin; + if (options.xStep !== undefined) this.defaultXStep = options.xStep; + if (options.xMax !== undefined) this.defaultXMax = options.xMax; + if (options.yMin !== undefined) this.defaultYMin = options.yMin; + if (options.yStep !== undefined) this.defaultYStep = options.yStep; + if (options.yMax !== undefined) this.defaultYMax = options.yMax; + if (options.zMin !== undefined) this.defaultZMin = options.zMin; + if (options.zStep !== undefined) this.defaultZStep = options.zStep; + if (options.zMax !== undefined) this.defaultZMax = options.zMax; + if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; + if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; - /** - * Calculate the scaling values, dependent on the range in x, y, and z direction - */ - Graph3d.prototype._setScale = function () { - this.scale = new Point3d(1 / (this.xMax - this.xMin), 1 / (this.yMax - this.yMin), 1 / (this.zMax - this.zMin)); + if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; - // keep aspect ration between x and y scale if desired - if (this.keepAspectRatio) { - if (this.scale.x < this.scale.y) { - //noinspection JSSuspiciousNameCombination - this.scale.y = this.scale.x; + if (cameraPosition !== undefined) { + this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); + this.camera.setArmLength(cameraPosition.distance); } else { - //noinspection JSSuspiciousNameCombination - this.scale.x = this.scale.y; + this.camera.setArmRotation(1, 0.5); + this.camera.setArmLength(1.7); } } - // scale the vertical axis - this.scale.z *= this.verticalRatio; - // TODO: can this be automated? verticalRatio? + this._setBackgroundColor(options && options.backgroundColor); - // determine scale for (optional) value - this.scale.value = 1 / (this.valueMax - this.valueMin); + this.setSize(this.width, this.height); - // position the camera arm - var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; - var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; - var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; - this.camera.setArmLocation(xCenter, yCenter, zCenter); - }; + // re-load the data + if (this.dataTable) { + this.setData(this.dataTable); + } - /** - * Convert a 3D location to a 2D location on screen - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point2d} point2d A 2D point with parameters x, y - */ - Graph3d.prototype._convert3Dto2D = function (point3d) { - var translation = this._convertPointToTranslation(point3d); - return this._convertTranslationToScreen(translation); + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } }; /** - * Convert a 3D location its translation seen from the camera - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera + * Redraw the Graph. */ - Graph3d.prototype._convertPointToTranslation = function (point3d) { - var ax = point3d.x * this.scale.x, - ay = point3d.y * this.scale.y, - az = point3d.z * this.scale.z, - cx = this.camera.getCameraLocation().x, - cy = this.camera.getCameraLocation().y, - cz = this.camera.getCameraLocation().z, - - // calculate angles - sinTx = Math.sin(this.camera.getCameraRotation().x), - cosTx = Math.cos(this.camera.getCameraRotation().x), - sinTy = Math.sin(this.camera.getCameraRotation().y), - cosTy = Math.cos(this.camera.getCameraRotation().y), - sinTz = Math.sin(this.camera.getCameraRotation().z), - cosTz = Math.cos(this.camera.getCameraRotation().z), - - // calculate translation - dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), - dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax - cx)), - dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax - cx)); - - return new Point3d(dx, dy, dz); - }; + Graph3d.prototype.redraw = function () { + if (this.dataPoints === undefined) { + throw 'Error: graph data not initialized'; + } - /** - * Convert a translation point to a point on the screen - * @param {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera - * @return {Point2d} point2d A 2D point with parameters x, y - */ - Graph3d.prototype._convertTranslationToScreen = function (translation) { - var ex = this.eye.x, - ey = this.eye.y, - ez = this.eye.z, - dx = translation.x, - dy = translation.y, - dz = translation.z; + this._resizeCanvas(); + this._resizeCenter(); + this._redrawSlider(); + this._redrawClear(); + this._redrawAxis(); - // calculate position on screen from translation - var bx; - var by; - if (this.showPerspective) { - bx = (dx - ex) * (ez / dz); - by = (dy - ey) * (ez / dz); + if (this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE) { + this._redrawDataGrid(); + } else if (this.style === Graph3d.STYLE.LINE) { + this._redrawDataLine(); + } else if (this.style === Graph3d.STYLE.BAR || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { + this._redrawDataBar(); } else { - bx = dx * -(ez / this.camera.getArmLength()); - by = dy * -(ez / this.camera.getArmLength()); + // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE + this._redrawDataDot(); } - // shift and scale the point to the center of the screen - // use the width of the graph to scale both horizontally and vertically. - return new Point2d(this.xcenter + bx * this.frame.canvas.clientWidth, this.ycenter - by * this.frame.canvas.clientWidth); + this._redrawInfo(); + this._redrawLegend(); }; /** - * Set the background styling for the graph - * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + * Clear the canvas before redrawing */ - Graph3d.prototype._setBackgroundColor = function (backgroundColor) { - var fill = 'white'; - var stroke = 'gray'; - var strokeWidth = 1; - - if (typeof backgroundColor === 'string') { - fill = backgroundColor; - stroke = 'none'; - strokeWidth = 0; - } else if (typeof backgroundColor === 'object') { - if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; - if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; - if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; - } else if (backgroundColor === undefined) {} else { - throw 'Unsupported type of backgroundColor'; - } - - this.frame.style.backgroundColor = fill; - this.frame.style.borderColor = stroke; - this.frame.style.borderWidth = strokeWidth + 'px'; - this.frame.style.borderStyle = 'solid'; - }; + Graph3d.prototype._redrawClear = function () { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - /// enumerate the available styles - Graph3d.STYLE = { - BAR: 0, - BARCOLOR: 1, - BARSIZE: 2, - DOT: 3, - DOTLINE: 4, - DOTCOLOR: 5, - DOTSIZE: 6, - GRID: 7, - LINE: 8, - SURFACE: 9 + ctx.clearRect(0, 0, canvas.width, canvas.height); }; /** - * Retrieve the style index from given styleName - * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' - * @return {Number} styleNumber Enumeration value representing the style, or -1 - * when not found + * Redraw the legend showing the colors */ - Graph3d.prototype._getStyleNumber = function (styleName) { - switch (styleName) { - case 'dot': - return Graph3d.STYLE.DOT; - case 'dot-line': - return Graph3d.STYLE.DOTLINE; - case 'dot-color': - return Graph3d.STYLE.DOTCOLOR; - case 'dot-size': - return Graph3d.STYLE.DOTSIZE; - case 'line': - return Graph3d.STYLE.LINE; - case 'grid': - return Graph3d.STYLE.GRID; - case 'surface': - return Graph3d.STYLE.SURFACE; - case 'bar': - return Graph3d.STYLE.BAR; - case 'bar-color': - return Graph3d.STYLE.BARCOLOR; - case 'bar-size': - return Graph3d.STYLE.BARSIZE; - } + Graph3d.prototype._redrawLegend = function () { + var y; - return -1; - }; + if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE) { - /** - * Determine the indexes of the data columns, based on the given style and data - * @param {DataSet} data - * @param {Number} style - */ - Graph3d.prototype._determineColumnIndexes = function (data, style) { - if (this.style === Graph3d.STYLE.DOT || this.style === Graph3d.STYLE.DOTLINE || this.style === Graph3d.STYLE.LINE || this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE || this.style === Graph3d.STYLE.BAR) { - // 3 columns expected, and optionally a 4th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = undefined; + var dotSize = this.frame.clientWidth * 0.02; - if (data.getNumberOfColumns() > 3) { - this.colFilter = 3; + var widthMin, widthMax; + if (this.style === Graph3d.STYLE.DOTSIZE) { + widthMin = dotSize / 2; // px + widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + } else { + widthMin = 20; // px + widthMax = 20; // px } - } else if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { - // 4 columns expected, and optionally a 5th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = 3; - if (data.getNumberOfColumns() > 4) { - this.colFilter = 4; - } - } else { - throw 'Unknown style "' + this.style + '"'; + var height = Math.max(this.frame.clientHeight * 0.25, 100); + var top = this.margin; + var right = this.frame.clientWidth - this.margin; + var left = right - widthMax; + var bottom = top + height; } - }; - Graph3d.prototype.getNumberOfRows = function (data) { - return data.length; - }; + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + ctx.lineWidth = 1; + ctx.font = '14px arial'; // TODO: put in options - Graph3d.prototype.getNumberOfColumns = function (data) { - var counter = 0; - for (var column in data[0]) { - if (data[0].hasOwnProperty(column)) { - counter++; - } - } - return counter; - }; + if (this.style === Graph3d.STYLE.DOTCOLOR) { + // draw the color bar + var ymin = 0; + var ymax = height; // Todo: make height customizable + for (y = ymin; y < ymax; y++) { + var f = (y - ymin) / (ymax - ymin); - Graph3d.prototype.getDistinctValues = function (data, column) { - var distinctValues = []; - for (var i = 0; i < data.length; i++) { - if (distinctValues.indexOf(data[i][column]) == -1) { - distinctValues.push(data[i][column]); - } - } - return distinctValues; - }; + //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function + var hue = f * 240; + var color = this._hsv2rgb(hue, 1, 1); - Graph3d.prototype.getColumnRange = function (data, column) { - var minMax = { min: data[0][column], max: data[0][column] }; - for (var i = 0; i < data.length; i++) { - if (minMax.min > data[i][column]) { - minMax.min = data[i][column]; - } - if (minMax.max < data[i][column]) { - minMax.max = data[i][column]; + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(left, top + y); + ctx.lineTo(right, top + y); + ctx.stroke(); } - } - return minMax; - }; - /** - * Initialize the data from the data table. Calculate minimum and maximum values - * and column index values - * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. - * @param {Number} style Style Number - */ - Graph3d.prototype._dataInitialize = function (rawData, style) { - var me = this; + ctx.strokeStyle = this.colorAxis; + ctx.strokeRect(left, top, widthMax, height); + } - // unsubscribe from the dataTable - if (this.dataSet) { - this.dataSet.off('*', this._onChange); + if (this.style === Graph3d.STYLE.DOTSIZE) { + // draw border around color bar + ctx.strokeStyle = this.colorAxis; + ctx.fillStyle = this.colorDot; + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(right, top); + ctx.lineTo(right - widthMax + widthMin, bottom); + ctx.lineTo(left, bottom); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); } - if (rawData === undefined) return; + if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE) { + // print values along the color bar + var gridLineLen = 5; // px + var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax - this.valueMin) / 5, true); + step.start(); + if (step.getCurrent() < this.valueMin) { + step.next(); + } + while (!step.end()) { + y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - if (Array.isArray(rawData)) { - rawData = new DataSet(rawData); - } + ctx.beginPath(); + ctx.moveTo(left - gridLineLen, y); + ctx.lineTo(left, y); + ctx.stroke(); - var data; - if (rawData instanceof DataSet || rawData instanceof DataView) { - data = rawData.get(); - } else { - throw new Error('Array, DataSet, or DataView expected'); - } + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); - if (data.length == 0) return; + step.next(); + } - this.dataSet = rawData; - this.dataTable = data; + ctx.textAlign = 'right'; + ctx.textBaseline = 'top'; + var label = this.legendLabel; + ctx.fillText(label, right, bottom + this.margin); + } + }; - // subscribe to changes in the dataset - this._onChange = function () { - me.setData(me.dataSet); - }; - this.dataSet.on('*', this._onChange); + /** + * Redraw the filter + */ + Graph3d.prototype._redrawFilter = function () { + this.frame.filter.innerHTML = ''; - // _determineColumnIndexes - // getNumberOfRows (points) - // getNumberOfColumns (x,y,z,v,t,t1,t2...) - // getDistinctValues (unique values?) - // getColumnRange + if (this.dataFilter) { + var options = { + 'visible': this.showAnimationControls + }; + var slider = new Slider(this.frame.filter, options); + this.frame.filter.slider = slider; - // determine the location of x,y,z,value,filter columns - this.colX = 'x'; - this.colY = 'y'; - this.colZ = 'z'; - this.colValue = 'style'; - this.colFilter = 'filter'; + // TODO: css here is not nice here... + this.frame.filter.style.padding = '10px'; + //this.frame.filter.style.backgroundColor = '#EFEFEF'; - // check if a filter column is provided - if (data[0].hasOwnProperty('filter')) { - if (this.dataFilter === undefined) { - this.dataFilter = new Filter(rawData, this.colFilter, this); - this.dataFilter.setOnLoadCallback(function () { - me.redraw(); - }); - } - } + slider.setValues(this.dataFilter.values); + slider.setPlayInterval(this.animationInterval); - var withBars = this.style == Graph3d.STYLE.BAR || this.style == Graph3d.STYLE.BARCOLOR || this.style == Graph3d.STYLE.BARSIZE; + // create an event handler + var me = this; + var onchange = function onchange() { + var index = slider.getIndex(); - // determine barWidth from data - if (withBars) { - if (this.defaultXBarWidth !== undefined) { - this.xBarWidth = this.defaultXBarWidth; - } else { - var dataX = this.getDistinctValues(data, this.colX); - this.xBarWidth = dataX[1] - dataX[0] || 1; - } + me.dataFilter.selectValue(index); + me.dataPoints = me.dataFilter._getDataPoints(); - if (this.defaultYBarWidth !== undefined) { - this.yBarWidth = this.defaultYBarWidth; - } else { - var dataY = this.getDistinctValues(data, this.colY); - this.yBarWidth = dataY[1] - dataY[0] || 1; - } + me.redraw(); + }; + slider.setOnChangeCallback(onchange); + } else { + this.frame.filter.slider = undefined; } + }; - // calculate minimums and maximums - var xRange = this.getColumnRange(data, this.colX); - if (withBars) { - xRange.min -= this.xBarWidth / 2; - xRange.max += this.xBarWidth / 2; + /** + * Redraw the slider + */ + Graph3d.prototype._redrawSlider = function () { + if (this.frame.filter.slider !== undefined) { + this.frame.filter.slider.redraw(); } - this.xMin = this.defaultXMin !== undefined ? this.defaultXMin : xRange.min; - this.xMax = this.defaultXMax !== undefined ? this.defaultXMax : xRange.max; - if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; - this.xStep = this.defaultXStep !== undefined ? this.defaultXStep : (this.xMax - this.xMin) / 5; + }; - var yRange = this.getColumnRange(data, this.colY); - if (withBars) { - yRange.min -= this.yBarWidth / 2; - yRange.max += this.yBarWidth / 2; - } - this.yMin = this.defaultYMin !== undefined ? this.defaultYMin : yRange.min; - this.yMax = this.defaultYMax !== undefined ? this.defaultYMax : yRange.max; - if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; - this.yStep = this.defaultYStep !== undefined ? this.defaultYStep : (this.yMax - this.yMin) / 5; + /** + * Redraw common information + */ + Graph3d.prototype._redrawInfo = function () { + if (this.dataFilter) { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - var zRange = this.getColumnRange(data, this.colZ); - this.zMin = this.defaultZMin !== undefined ? this.defaultZMin : zRange.min; - this.zMax = this.defaultZMax !== undefined ? this.defaultZMax : zRange.max; - if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; - this.zStep = this.defaultZStep !== undefined ? this.defaultZStep : (this.zMax - this.zMin) / 5; + ctx.font = '14px arial'; // TODO: put in options + ctx.lineStyle = 'gray'; + ctx.fillStyle = 'gray'; + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; - if (this.colValue !== undefined) { - var valueRange = this.getColumnRange(data, this.colValue); - this.valueMin = this.defaultValueMin !== undefined ? this.defaultValueMin : valueRange.min; - this.valueMax = this.defaultValueMax !== undefined ? this.defaultValueMax : valueRange.max; - if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; + var x = this.margin; + var y = this.margin; + ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); } - - // set the scale dependent on the ranges. - this._setScale(); }; /** - * Filter the data based on the current filter - * @param {Array} data - * @return {Array} dataPoints Array with point objects which can be drawn on screen + * Redraw the axis */ - Graph3d.prototype._getDataPoints = function (data) { - // TODO: store the created matrix dataPoints in the filters instead of reloading each time - var x, y, i, z, obj, point; - - var dataPoints = []; + Graph3d.prototype._redrawAxis = function () { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + from, + to, + step, + prettyStep, + text, + xText, + yText, + zText, + offset, + xOffset, + yOffset, + xMin2d, + xMax2d; - if (this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE) { - // copy all values from the google data table to a matrix - // the provided values are supposed to form a grid of (x,y) positions - - // create two lists with all present x and y values - var dataX = []; - var dataY = []; - for (i = 0; i < this.getNumberOfRows(data); i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - - if (dataX.indexOf(x) === -1) { - dataX.push(x); - } - if (dataY.indexOf(y) === -1) { - dataY.push(y); - } - } + // TODO: get the actual rendered style of the containerElement + //ctx.font = this.containerElement.style.font; + ctx.font = 24 / this.camera.getArmLength() + 'px arial'; - var sortNumber = function sortNumber(a, b) { - return a - b; - }; - dataX.sort(sortNumber); - dataY.sort(sortNumber); + // calculate the length for the short grid lines + var gridLenX = 0.025 / this.scale.x; + var gridLenY = 0.025 / this.scale.y; + var textMargin = 5 / this.camera.getArmLength(); // px + var armAngle = this.camera.getArmRotation().horizontal; - // create a grid, a 2d matrix, with all values. - var dataMatrix = []; // temporary data matrix - for (i = 0; i < data.length; i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - z = data[i][this.colZ] || 0; + // draw x-grid lines + ctx.lineWidth = 1; + prettyStep = this.defaultXStep === undefined; + step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); + step.start(); + if (step.getCurrent() < this.xMin) { + step.next(); + } + while (!step.end()) { + var x = step.getCurrent(); - var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer - var yIndex = dataY.indexOf(y); + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } else { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMin + gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - if (dataMatrix[xIndex] === undefined) { - dataMatrix[xIndex] = []; - } + from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax - gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } - var point3d = new Point3d(); - point3d.x = x; - point3d.y = y; - point3d.z = z; + yText = Math.cos(armAngle) > 0 ? this.yMin : this.yMax; + text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } else if (Math.sin(armAngle * 2) < 0) { + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); - obj = {}; - obj.point = point3d; - obj.trans = undefined; - obj.screen = undefined; - obj.bottom = new Point3d(x, y, this.zMin); + step.next(); + } - dataMatrix[xIndex][yIndex] = obj; + // draw y-grid lines + ctx.lineWidth = 1; + prettyStep = this.defaultYStep === undefined; + step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); + step.start(); + if (step.getCurrent() < this.yMin) { + step.next(); + } + while (!step.end()) { + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } else { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin + gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - dataPoints.push(obj); + from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax - gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); } - // fill in the pointers to the neighbors. - for (x = 0; x < dataMatrix.length; x++) { - for (y = 0; y < dataMatrix[x].length; y++) { - if (dataMatrix[x][y]) { - dataMatrix[x][y].pointRight = x < dataMatrix.length - 1 ? dataMatrix[x + 1][y] : undefined; - dataMatrix[x][y].pointTop = y < dataMatrix[x].length - 1 ? dataMatrix[x][y + 1] : undefined; - dataMatrix[x][y].pointCross = x < dataMatrix.length - 1 && y < dataMatrix[x].length - 1 ? dataMatrix[x + 1][y + 1] : undefined; - } - } + xText = Math.sin(armAngle) > 0 ? this.xMin : this.xMax; + text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } else if (Math.sin(armAngle * 2) > 0) { + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; } - } else { - // 'dot', 'dot-line', etc. - // copy all values from the google data table to a list with Point3d objects - for (i = 0; i < data.length; i++) { - point = new Point3d(); - point.x = data[i][this.colX] || 0; - point.y = data[i][this.colY] || 0; - point.z = data[i][this.colZ] || 0; - - if (this.colValue !== undefined) { - point.value = data[i][this.colValue] || 0; - } - - obj = {}; - obj.point = point; - obj.bottom = new Point3d(point.x, point.y, this.zMin); - obj.trans = undefined; - obj.screen = undefined; + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - dataPoints.push(obj); - } + step.next(); } - return dataPoints; - }; - - /** - * Create the main frame for the Graph3d. - * This function is executed once when a Graph3d object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. - */ - Graph3d.prototype.create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); + // draw z-grid lines and axis + ctx.lineWidth = 1; + prettyStep = this.defaultZStep === undefined; + step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); + step.start(); + if (step.getCurrent() < this.zMin) { + step.next(); } + xText = Math.cos(armAngle) > 0 ? this.xMin : this.xMax; + yText = Math.sin(armAngle) < 0 ? this.yMin : this.yMax; + while (!step.end()) { + // TODO: make z-grid lines really 3d? + from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(from.x - textMargin, from.y); + ctx.stroke(); - this.frame = document.createElement('div'); - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); - // create the graph canvas (HTML canvas element) - this.frame.canvas = document.createElement('canvas'); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); - //if (!this.frame.canvas.getContext) { - { - var noCanvas = document.createElement('DIV'); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold'; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + step.next(); } + ctx.lineWidth = 1; + from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - this.frame.filter = document.createElement('div'); - this.frame.filter.style.position = 'absolute'; - this.frame.filter.style.bottom = '0px'; - this.frame.filter.style.left = '0px'; - this.frame.filter.style.width = '100%'; - this.frame.appendChild(this.frame.filter); - - // add event listeners to handle moving and zooming the contents - var me = this; - var onmousedown = function onmousedown(event) { - me._onMouseDown(event); - }; - var ontouchstart = function ontouchstart(event) { - me._onTouchStart(event); - }; - var onmousewheel = function onmousewheel(event) { - me._onWheel(event); - }; - var ontooltip = function ontooltip(event) { - me._onTooltip(event); - }; - // TODO: these events are never cleaned up... can give a 'memory leakage' + // draw x-axis + ctx.lineWidth = 1; + // line at yMin + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); + // line at ymax + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); - util.addEventListener(this.frame.canvas, 'keydown', onkeydown); - util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); - util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); - util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); - util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); + // draw y-axis + ctx.lineWidth = 1; + // line at xMin + from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + // line at xMax + from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - // add the new graph to the container element - this.containerElement.appendChild(this.frame); - }; + // draw x-label + var xLabel = this.xLabel; + if (xLabel.length > 0) { + yOffset = 0.1 / this.scale.y; + xText = (this.xMin + this.xMax) / 2; + yText = Math.cos(armAngle) > 0 ? this.yMin - yOffset : this.yMax + yOffset; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } else if (Math.sin(armAngle * 2) < 0) { + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(xLabel, text.x, text.y); + } - /** - * Set a new size for the graph - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') - */ - Graph3d.prototype.setSize = function (width, height) { - this.frame.style.width = width; - this.frame.style.height = height; + // draw y-label + var yLabel = this.yLabel; + if (yLabel.length > 0) { + xOffset = 0.1 / this.scale.x; + xText = Math.sin(armAngle) > 0 ? this.xMin - xOffset : this.xMax + xOffset; + yText = (this.yMin + this.yMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } else if (Math.sin(armAngle * 2) > 0) { + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(yLabel, text.x, text.y); + } - this._resizeCanvas(); + // draw z-label + var zLabel = this.zLabel; + if (zLabel.length > 0) { + offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? + xText = Math.cos(armAngle) > 0 ? this.xMin : this.xMax; + yText = Math.sin(armAngle) < 0 ? this.yMin : this.yMax; + zText = (this.zMin + this.zMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, zText)); + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(zLabel, text.x - offset, text.y); + } }; /** - * Resize the canvas to the current size of the frame + * Calculate the color based on the given value. + * @param {Number} H Hue, a value be between 0 and 360 + * @param {Number} S Saturation, a value between 0 and 1 + * @param {Number} V Value, a value between 0 and 1 */ - Graph3d.prototype._resizeCanvas = function () { - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; + Graph3d.prototype._hsv2rgb = function (H, S, V) { + var R, G, B, C, Hi, X; - this.frame.canvas.width = this.frame.canvas.clientWidth; - this.frame.canvas.height = this.frame.canvas.clientHeight; + C = V * S; + Hi = Math.floor(H / 60); // hi = 0,1,2,3,4,5 + X = C * (1 - Math.abs(H / 60 % 2 - 1)); - // adjust with for margin - this.frame.filter.style.width = this.frame.canvas.clientWidth - 2 * 10 + 'px'; - }; + switch (Hi) { + case 0: + R = C;G = X;B = 0;break; + case 1: + R = X;G = C;B = 0;break; + case 2: + R = 0;G = C;B = X;break; + case 3: + R = 0;G = X;B = C;break; + case 4: + R = X;G = 0;B = C;break; + case 5: + R = C;G = 0;B = X;break; - /** - * Start animation - */ - Graph3d.prototype.animationStart = function () { - if (!this.frame.filter || !this.frame.filter.slider) throw 'No animation available'; + default: + R = 0;G = 0;B = 0;break; + } - this.frame.filter.slider.play(); + return 'RGB(' + parseInt(R * 255) + ',' + parseInt(G * 255) + ',' + parseInt(B * 255) + ')'; }; /** - * Stop animation + * Draw all datapoints as a grid + * This function can be used when the style is 'grid' */ - Graph3d.prototype.animationStop = function () { - if (!this.frame.filter || !this.frame.filter.slider) return; - - this.frame.filter.slider.stop(); - }; + Graph3d.prototype._redrawDataGrid = function () { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, + right, + top, + cross, + i, + topSideVisible, + fillStyle, + strokeStyle, + lineWidth, + h, + s, + v, + zAvg; - /** - * Resize the center position based on the current values in this.defaultXCenter - * and this.defaultYCenter (which are strings with a percentage or a value - * in pixels). The center positions are the variables this.xCenter - * and this.yCenter - */ - Graph3d.prototype._resizeCenter = function () { - // calculate the horizontal center position - if (this.defaultXCenter.charAt(this.defaultXCenter.length - 1) === '%') { - this.xcenter = parseFloat(this.defaultXCenter) / 100 * this.frame.canvas.clientWidth; - } else { - this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px - } + if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? - // calculate the vertical center position - if (this.defaultYCenter.charAt(this.defaultYCenter.length - 1) === '%') { - this.ycenter = parseFloat(this.defaultYCenter) / 100 * (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); - } else { - this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px - } - }; + // calculate the translations and screen position of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); - /** - * Set the rotation and distance of the camera - * @param {Object} pos An object with the camera position. The object - * contains three parameters: - * - horizontal {Number} - * The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * - vertical {Number} - * The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - * - distance {Number} - * The (normalized) distance of the camera to the - * center of the graph, a value between 0.71 and 5.0. - * Optional, can be left undefined. - */ - Graph3d.prototype.setCameraPosition = function (pos) { - if (pos === undefined) { - return; - } + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - if (pos.horizontal !== undefined && pos.vertical !== undefined) { - this.camera.setArmRotation(pos.horizontal, pos.vertical); + // calculate the translation of the point at the bottom (needed for sorting) + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; } - if (pos.distance !== undefined) { - this.camera.setArmLength(pos.distance); - } + // sort the points on depth of their (x,y) position (not on z) + var sortDepth = function sortDepth(a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - this.redraw(); - }; + if (this.style === Graph3d.STYLE.SURFACE) { + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; + cross = this.dataPoints[i].pointCross; - /** - * Retrieve the current camera rotation - * @return {object} An object with parameters horizontal, vertical, and - * distance - */ - Graph3d.prototype.getCameraPosition = function () { - var pos = this.camera.getArmRotation(); - pos.distance = this.camera.getArmLength(); - return pos; - }; + if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { - /** - * Load data into the 3D Graph - */ - Graph3d.prototype._readData = function (data) { - // read the data - this._dataInitialize(data, this.style); - - if (this.dataFilter) { - // apply filtering - this.dataPoints = this.dataFilter._getDataPoints(); - } else { - // no filtering. load all data - this.dataPoints = this._getDataPoints(this.dataTable); - } - - // draw the filter - this._redrawFilter(); - }; + if (this.showGrayBottom || this.showShadow) { + // calculate the cross product of the two vectors from center + // to left and right, in order to know whether we are looking at the + // bottom or at the top side. We can also use the cross product + // for calculating light intensity + var aDiff = Point3d.subtract(cross.trans, point.trans); + var bDiff = Point3d.subtract(top.trans, right.trans); + var crossproduct = Point3d.crossProduct(aDiff, bDiff); + var len = crossproduct.length(); + // FIXME: there is a bug with determining the surface side (shadow or colored) - /** - * Replace the dataset of the Graph3d - * @param {Array | DataSet | DataView} data - */ - Graph3d.prototype.setData = function (data) { - this._readData(data); - this.redraw(); + topSideVisible = crossproduct.z > 0; + } else { + topSideVisible = true; + } - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); - } - }; + if (topSideVisible) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + s = 1; // saturation - /** - * Update the options. Options will be merged with current options - * @param {Object} options - */ - Graph3d.prototype.setOptions = function (options) { - var cameraPosition = undefined; + if (this.showShadow) { + v = Math.min(1 + crossproduct.x / len / 2, 1); // value. TODO: scale + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = fillStyle; + } else { + v = 1; + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = this.colorAxis; + } + } else { + fillStyle = 'gray'; + strokeStyle = this.colorAxis; + } + lineWidth = 0.5; - this.animationStop(); + ctx.lineWidth = lineWidth; + ctx.fillStyle = fillStyle; + ctx.strokeStyle = strokeStyle; + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.lineTo(cross.screen.x, cross.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } + } + } else { + // grid style + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; - if (options !== undefined) { - // retrieve parameter values - if (options.width !== undefined) this.width = options.width; - if (options.height !== undefined) this.height = options.height; + if (point !== undefined) { + if (this.showPerspective) { + lineWidth = 2 / -point.trans.z; + } else { + lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + } + } - if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; - if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; + if (point !== undefined && right !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; - if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; - if (options.xLabel !== undefined) this.xLabel = options.xLabel; - if (options.yLabel !== undefined) this.yLabel = options.yLabel; - if (options.zLabel !== undefined) this.zLabel = options.zLabel; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.stroke(); + } - if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; - if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; - if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + if (point !== undefined && top !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + top.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - if (options.style !== undefined) { - var styleNumber = this._getStyleNumber(options.style); - if (styleNumber !== -1) { - this.style = styleNumber; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.stroke(); } } - if (options.showGrid !== undefined) this.showGrid = options.showGrid; - if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; - if (options.showShadow !== undefined) this.showShadow = options.showShadow; - if (options.tooltip !== undefined) this.showTooltip = options.tooltip; - if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; - if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; - if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; - - if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; - if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; - if (options.animationAutoStart !== undefined) this.animationAutoStart = options.animationAutoStart; + } + }; - if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; - if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; + /** + * Draw all datapoints as dots. + * This function can be used when the style is 'dot' or 'dot-line' + */ + Graph3d.prototype._redrawDataDot = function () { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i; - if (options.xMin !== undefined) this.defaultXMin = options.xMin; - if (options.xStep !== undefined) this.defaultXStep = options.xStep; - if (options.xMax !== undefined) this.defaultXMax = options.xMax; - if (options.yMin !== undefined) this.defaultYMin = options.yMin; - if (options.yStep !== undefined) this.defaultYStep = options.yStep; - if (options.yMax !== undefined) this.defaultYMax = options.yMax; - if (options.zMin !== undefined) this.defaultZMin = options.zMin; - if (options.zStep !== undefined) this.defaultZStep = options.zStep; - if (options.zMax !== undefined) this.defaultZMax = options.zMax; - if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; - if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; + if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? - if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - if (cameraPosition !== undefined) { - this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); - this.camera.setArmLength(cameraPosition.distance); - } else { - this.camera.setArmRotation(1, 0.5); - this.camera.setArmLength(1.7); - } + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; } - this._setBackgroundColor(options && options.backgroundColor); + // order the translated points by depth + var sortDepth = function sortDepth(a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - this.setSize(this.width, this.height); + // draw the datapoints as colored circles + var dotSize = this.frame.clientWidth * 0.02; // px + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; - // re-load the data - if (this.dataTable) { - this.setData(this.dataTable); - } + if (this.style === Graph3d.STYLE.DOTLINE) { + // draw a vertical line from the bottom to the graph value + //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); + var from = this._convert3Dto2D(point.bottom); + ctx.lineWidth = 1; + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(point.screen.x, point.screen.y); + ctx.stroke(); + } - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); - } - }; + // calculate radius for the circle + var size; + if (this.style === Graph3d.STYLE.DOTSIZE) { + size = dotSize / 2 + 2 * dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); + } else { + size = dotSize; + } - /** - * Redraw the Graph. - */ - Graph3d.prototype.redraw = function () { - if (this.dataPoints === undefined) { - throw 'Error: graph data not initialized'; - } + var radius; + if (this.showPerspective) { + radius = size / -point.trans.z; + } else { + radius = size * -(this.eye.z / this.camera.getArmLength()); + } + if (radius < 0) { + radius = 0; + } - this._resizeCanvas(); - this._resizeCenter(); - this._redrawSlider(); - this._redrawClear(); - this._redrawAxis(); + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.DOTCOLOR) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } else if (this.style === Graph3d.STYLE.DOTSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; + } else { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } - if (this.style === Graph3d.STYLE.GRID || this.style === Graph3d.STYLE.SURFACE) { - this._redrawDataGrid(); - } else if (this.style === Graph3d.STYLE.LINE) { - this._redrawDataLine(); - } else if (this.style === Graph3d.STYLE.BAR || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { - this._redrawDataBar(); - } else { - // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE - this._redrawDataDot(); + // draw the circle + ctx.lineWidth = 1; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + ctx.beginPath(); + ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI * 2, true); + ctx.fill(); + ctx.stroke(); } - - this._redrawInfo(); - this._redrawLegend(); }; /** - * Clear the canvas before redrawing + * Draw all datapoints as bars. + * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' */ - Graph3d.prototype._redrawClear = function () { + Graph3d.prototype._redrawDataBar = function () { var canvas = this.frame.canvas; var ctx = canvas.getContext('2d'); + var i, j, surface, corners; - ctx.clearRect(0, 0, canvas.width, canvas.height); - }; + if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? - /** - * Redraw the legend showing the colors - */ - Graph3d.prototype._redrawLegend = function () { - var y; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE) { + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } - var dotSize = this.frame.clientWidth * 0.02; + // order the translated points by depth + var sortDepth = function sortDepth(a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - var widthMin, widthMax; - if (this.style === Graph3d.STYLE.DOTSIZE) { - widthMin = dotSize / 2; // px - widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + // draw the datapoints as bars + var xWidth = this.xBarWidth / 2; + var yWidth = this.yBarWidth / 2; + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; + + // determine color + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.BARCOLOR) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } else if (this.style === Graph3d.STYLE.BARSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; } else { - widthMin = 20; // px - widthMax = 20; // px + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); } - var height = Math.max(this.frame.clientHeight * 0.25, 100); - var top = this.margin; - var right = this.frame.clientWidth - this.margin; - var left = right - widthMax; - var bottom = top + height; - } + // calculate size for the bar + if (this.style === Graph3d.STYLE.BARSIZE) { + xWidth = this.xBarWidth / 2 * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + yWidth = this.yBarWidth / 2 * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + } - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - ctx.lineWidth = 1; - ctx.font = '14px arial'; // TODO: put in options + // calculate all corner points + var me = this; + var point3d = point.point; + var top = [{ point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z) }, { point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z) }, { point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z) }, { point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z) }]; + var bottom = [{ point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin) }, { point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin) }, { point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin) }, { point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin) }]; - if (this.style === Graph3d.STYLE.DOTCOLOR) { - // draw the color bar - var ymin = 0; - var ymax = height; // Todo: make height customizable - for (y = ymin; y < ymax; y++) { - var f = (y - ymin) / (ymax - ymin); + // calculate screen location of the points + top.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); + bottom.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); - //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function - var hue = f * 240; - var color = this._hsv2rgb(hue, 1, 1); + // create five sides, calculate both corner points and center points + var surfaces = [{ corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point) }, { corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point) }, { corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point) }, { corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point) }, { corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point) }]; + point.surfaces = surfaces; - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(left, top + y); - ctx.lineTo(right, top + y); - ctx.stroke(); + // calculate the distance of each of the surface centers to the camera + for (j = 0; j < surfaces.length; j++) { + surface = surfaces[j]; + var transCenter = this._convertPointToTranslation(surface.center); + surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; + // TODO: this dept calculation doesn't work 100% of the cases due to perspective, + // but the current solution is fast/simple and works in 99.9% of all cases + // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) } - ctx.strokeStyle = this.colorAxis; - ctx.strokeRect(left, top, widthMax, height); - } + // order the surfaces by their (translated) depth + surfaces.sort(function (a, b) { + var diff = b.dist - a.dist; + if (diff) return diff; - if (this.style === Graph3d.STYLE.DOTSIZE) { - // draw border around color bar - ctx.strokeStyle = this.colorAxis; - ctx.fillStyle = this.colorDot; - ctx.beginPath(); - ctx.moveTo(left, top); - ctx.lineTo(right, top); - ctx.lineTo(right - widthMax + widthMin, bottom); - ctx.lineTo(left, bottom); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - } + // if equal depth, sort the top surface last + if (a.corners === top) return 1; + if (b.corners === top) return -1; - if (this.style === Graph3d.STYLE.DOTCOLOR || this.style === Graph3d.STYLE.DOTSIZE) { - // print values along the color bar - var gridLineLen = 5; // px - var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax - this.valueMin) / 5, true); - step.start(); - if (step.getCurrent() < this.valueMin) { - step.next(); - } - while (!step.end()) { - y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; + // both are equal + return 0; + }); + // draw the ordered surfaces + ctx.lineWidth = 1; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside + for (j = 2; j < surfaces.length; j++) { + surface = surfaces[j]; + corners = surface.corners; ctx.beginPath(); - ctx.moveTo(left - gridLineLen, y); - ctx.lineTo(left, y); + ctx.moveTo(corners[3].screen.x, corners[3].screen.y); + ctx.lineTo(corners[0].screen.x, corners[0].screen.y); + ctx.lineTo(corners[1].screen.x, corners[1].screen.y); + ctx.lineTo(corners[2].screen.x, corners[2].screen.y); + ctx.lineTo(corners[3].screen.x, corners[3].screen.y); + ctx.fill(); ctx.stroke(); - - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); - - step.next(); } - - ctx.textAlign = 'right'; - ctx.textBaseline = 'top'; - var label = this.legendLabel; - ctx.fillText(label, right, bottom + this.margin); } }; /** - * Redraw the filter + * Draw a line through all datapoints. + * This function can be used when the style is 'line' */ - Graph3d.prototype._redrawFilter = function () { - this.frame.filter.innerHTML = ''; + Graph3d.prototype._redrawDataLine = function () { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, + i; - if (this.dataFilter) { - var options = { - 'visible': this.showAnimationControls - }; - var slider = new Slider(this.frame.filter, options); - this.frame.filter.slider = slider; + if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? - // TODO: css here is not nice here... - this.frame.filter.style.padding = '10px'; - //this.frame.filter.style.backgroundColor = '#EFEFEF'; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); - slider.setValues(this.dataFilter.values); - slider.setPlayInterval(this.animationInterval); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; + } - // create an event handler - var me = this; - var onchange = function onchange() { - var index = slider.getIndex(); + // start the line + if (this.dataPoints.length > 0) { + point = this.dataPoints[0]; - me.dataFilter.selectValue(index); - me.dataPoints = me.dataFilter._getDataPoints(); + ctx.lineWidth = 1; // TODO: make customizable + ctx.strokeStyle = 'blue'; // TODO: make customizable + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + } - me.redraw(); - }; - slider.setOnChangeCallback(onchange); - } else { - this.frame.filter.slider = undefined; + // draw the datapoints as colored circles + for (i = 1; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + ctx.lineTo(point.screen.x, point.screen.y); + } + + // finish the line + if (this.dataPoints.length > 0) { + ctx.stroke(); } }; /** - * Redraw the slider - */ - Graph3d.prototype._redrawSlider = function () { - if (this.frame.filter.slider !== undefined) { - this.frame.filter.slider.redraw(); + * Start a moving operation inside the provided parent element + * @param {Event} event The event that occurred (required for + * retrieving the mouse position) + */ + Graph3d.prototype._onMouseDown = function (event) { + event = event || window.event; + + // check if mouse is still down (may be up when focus is lost for example + // in an iframe) + if (this.leftButtonDown) { + this._onMouseUp(event); } - }; - /** - * Redraw common information - */ - Graph3d.prototype._redrawInfo = function () { - if (this.dataFilter) { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + // only react on left mouse button down + this.leftButtonDown = event.which ? event.which === 1 : event.button === 1; + if (!this.leftButtonDown && !this.touchDown) return; - ctx.font = '14px arial'; // TODO: put in options - ctx.lineStyle = 'gray'; - ctx.fillStyle = 'gray'; - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; + // get mouse position (different code for IE and all other browsers) + this.startMouseX = getMouseX(event); + this.startMouseY = getMouseY(event); - var x = this.margin; - var y = this.margin; - ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); - } + this.startStart = new Date(this.start); + this.startEnd = new Date(this.end); + this.startArmRotation = this.camera.getArmRotation(); + + this.frame.style.cursor = 'move'; + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) { + me._onMouseMove(event); + }; + this.onmouseup = function (event) { + me._onMouseUp(event); + }; + util.addEventListener(document, 'mousemove', me.onmousemove); + util.addEventListener(document, 'mouseup', me.onmouseup); + util.preventDefault(event); }; /** - * Redraw the axis + * Perform moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {Event} event Well, eehh, the event */ - Graph3d.prototype._redrawAxis = function () { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - from, - to, - step, - prettyStep, - text, - xText, - yText, - zText, - offset, - xOffset, - yOffset, - xMin2d, - xMax2d; - - // TODO: get the actual rendered style of the containerElement - //ctx.font = this.containerElement.style.font; - ctx.font = 24 / this.camera.getArmLength() + 'px arial'; - - // calculate the length for the short grid lines - var gridLenX = 0.025 / this.scale.x; - var gridLenY = 0.025 / this.scale.y; - var textMargin = 5 / this.camera.getArmLength(); // px - var armAngle = this.camera.getArmRotation().horizontal; - - // draw x-grid lines - ctx.lineWidth = 1; - prettyStep = this.defaultXStep === undefined; - step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); - step.start(); - if (step.getCurrent() < this.xMin) { - step.next(); - } - while (!step.end()) { - var x = step.getCurrent(); + Graph3d.prototype._onMouseMove = function (event) { + event = event || window.event; - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } else { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMin + gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + // calculate change in mouse position + var diffX = parseFloat(getMouseX(event)) - this.startMouseX; + var diffY = parseFloat(getMouseY(event)) - this.startMouseY; - from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax - gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + var horizontalNew = this.startArmRotation.horizontal + diffX / 200; + var verticalNew = this.startArmRotation.vertical + diffY / 200; - yText = Math.cos(armAngle) > 0 ? this.yMin : this.yMax; - text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } else if (Math.sin(armAngle * 2) < 0) { - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); + var snapAngle = 4; // degrees + var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); - step.next(); + // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... + // the -0.001 is to take care that the vertical axis is always drawn at the left front corner + if (Math.abs(Math.sin(horizontalNew)) < snapValue) { + horizontalNew = Math.round(horizontalNew / Math.PI) * Math.PI - 0.001; + } + if (Math.abs(Math.cos(horizontalNew)) < snapValue) { + horizontalNew = (Math.round(horizontalNew / Math.PI - 0.5) + 0.5) * Math.PI - 0.001; } - // draw y-grid lines - ctx.lineWidth = 1; - prettyStep = this.defaultYStep === undefined; - step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); - step.start(); - if (step.getCurrent() < this.yMin) { - step.next(); + // snap vertically to nice angles + if (Math.abs(Math.sin(verticalNew)) < snapValue) { + verticalNew = Math.round(verticalNew / Math.PI) * Math.PI; + } + if (Math.abs(Math.cos(verticalNew)) < snapValue) { + verticalNew = (Math.round(verticalNew / Math.PI - 0.5) + 0.5) * Math.PI; } - while (!step.end()) { - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } else { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin + gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax - gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + this.camera.setArmRotation(horizontalNew, verticalNew); + this.redraw(); - xText = Math.sin(armAngle) > 0 ? this.xMin : this.xMax; - text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } else if (Math.sin(armAngle * 2) > 0) { - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); - step.next(); - } + util.preventDefault(event); + }; - // draw z-grid lines and axis - ctx.lineWidth = 1; - prettyStep = this.defaultZStep === undefined; - step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); - step.start(); - if (step.getCurrent() < this.zMin) { - step.next(); - } - xText = Math.cos(armAngle) > 0 ? this.xMin : this.xMax; - yText = Math.sin(armAngle) < 0 ? this.yMin : this.yMax; - while (!step.end()) { - // TODO: make z-grid lines really 3d? - from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(from.x - textMargin, from.y); - ctx.stroke(); + /** + * Stop moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {event} event The event + */ + Graph3d.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; + this.leftButtonDown = false; - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); + // remove event listeners here + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - step.next(); - } - ctx.lineWidth = 1; - from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + /** + * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point + * @param {Event} event A mouse move event + */ + Graph3d.prototype._onTooltip = function (event) { + var delay = 300; // ms + var boundingRect = this.frame.getBoundingClientRect(); + var mouseX = getMouseX(event) - boundingRect.left; + var mouseY = getMouseY(event) - boundingRect.top; - // draw x-axis - ctx.lineWidth = 1; - // line at yMin - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); - // line at ymax - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); + if (!this.showTooltip) { + return; + } - // draw y-axis - ctx.lineWidth = 1; - // line at xMin - from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // line at xMax - from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + if (this.tooltipTimeout) { + clearTimeout(this.tooltipTimeout); + } - // draw x-label - var xLabel = this.xLabel; - if (xLabel.length > 0) { - yOffset = 0.1 / this.scale.y; - xText = (this.xMin + this.xMax) / 2; - yText = Math.cos(armAngle) > 0 ? this.yMin - yOffset : this.yMax + yOffset; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } else if (Math.sin(armAngle * 2) < 0) { - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(xLabel, text.x, text.y); + // (delayed) display of a tooltip only if no mouse button is down + if (this.leftButtonDown) { + this._hideTooltip(); + return; } - // draw y-label - var yLabel = this.yLabel; - if (yLabel.length > 0) { - xOffset = 0.1 / this.scale.x; - xText = Math.sin(armAngle) > 0 ? this.xMin - xOffset : this.xMax + xOffset; - yText = (this.yMin + this.yMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } else if (Math.sin(armAngle * 2) > 0) { - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + if (this.tooltip && this.tooltip.dataPoint) { + // tooltip is currently visible + var dataPoint = this._dataPointFromXY(mouseX, mouseY); + if (dataPoint !== this.tooltip.dataPoint) { + // datapoint changed + if (dataPoint) { + this._showTooltip(dataPoint); + } else { + this._hideTooltip(); + } } - ctx.fillStyle = this.colorAxis; - ctx.fillText(yLabel, text.x, text.y); - } + } else { + // tooltip is currently not visible + var me = this; + this.tooltipTimeout = setTimeout(function () { + me.tooltipTimeout = null; - // draw z-label - var zLabel = this.zLabel; - if (zLabel.length > 0) { - offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? - xText = Math.cos(armAngle) > 0 ? this.xMin : this.xMax; - yText = Math.sin(armAngle) < 0 ? this.yMin : this.yMax; - zText = (this.zMin + this.zMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, zText)); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(zLabel, text.x - offset, text.y); + // show a tooltip if we have a data point + var dataPoint = me._dataPointFromXY(mouseX, mouseY); + if (dataPoint) { + me._showTooltip(dataPoint); + } + }, delay); } }; /** - * Calculate the color based on the given value. - * @param {Number} H Hue, a value be between 0 and 360 - * @param {Number} S Saturation, a value between 0 and 1 - * @param {Number} V Value, a value between 0 and 1 + * Event handler for touchstart event on mobile devices */ - Graph3d.prototype._hsv2rgb = function (H, S, V) { - var R, G, B, C, Hi, X; - - C = V * S; - Hi = Math.floor(H / 60); // hi = 0,1,2,3,4,5 - X = C * (1 - Math.abs(H / 60 % 2 - 1)); + Graph3d.prototype._onTouchStart = function (event) { + this.touchDown = true; - switch (Hi) { - case 0: - R = C;G = X;B = 0;break; - case 1: - R = X;G = C;B = 0;break; - case 2: - R = 0;G = C;B = X;break; - case 3: - R = 0;G = X;B = C;break; - case 4: - R = X;G = 0;B = C;break; - case 5: - R = C;G = 0;B = X;break; + var me = this; + this.ontouchmove = function (event) { + me._onTouchMove(event); + }; + this.ontouchend = function (event) { + me._onTouchEnd(event); + }; + util.addEventListener(document, 'touchmove', me.ontouchmove); + util.addEventListener(document, 'touchend', me.ontouchend); - default: - R = 0;G = 0;B = 0;break; - } + this._onMouseDown(event); + }; - return 'RGB(' + parseInt(R * 255) + ',' + parseInt(G * 255) + ',' + parseInt(B * 255) + ')'; + /** + * Event handler for touchmove event on mobile devices + */ + Graph3d.prototype._onTouchMove = function (event) { + this._onMouseMove(event); }; /** - * Draw all datapoints as a grid - * This function can be used when the style is 'grid' + * Event handler for touchend event on mobile devices */ - Graph3d.prototype._redrawDataGrid = function () { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, - right, - top, - cross, - i, - topSideVisible, - fillStyle, - strokeStyle, - lineWidth, - h, - s, - v, - zAvg; + Graph3d.prototype._onTouchEnd = function (event) { + this.touchDown = false; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? + util.removeEventListener(document, 'touchmove', this.ontouchmove); + util.removeEventListener(document, 'touchend', this.ontouchend); - // calculate the translations and screen position of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + this._onMouseUp(event); + }; - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + /** + * Event handler for mouse wheel event, used to zoom the graph + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {event} event The event + */ + Graph3d.prototype._onWheel = function (event) { + if (!event) /* For IE. */ + event = window.event; - // calculate the translation of the point at the bottom (needed for sorting) - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + // retrieve delta + var delta = 0; + if (event.wheelDelta) { + /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { + /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; } - // sort the points on depth of their (x,y) position (not on z) - var sortDepth = function sortDepth(a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + var oldLength = this.camera.getArmLength(); + var newLength = oldLength * (1 - delta / 10); - if (this.style === Graph3d.STYLE.SURFACE) { - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - cross = this.dataPoints[i].pointCross; + this.camera.setArmLength(newLength); + this.redraw(); - if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { + this._hideTooltip(); + } - if (this.showGrayBottom || this.showShadow) { - // calculate the cross product of the two vectors from center - // to left and right, in order to know whether we are looking at the - // bottom or at the top side. We can also use the cross product - // for calculating light intensity - var aDiff = Point3d.subtract(cross.trans, point.trans); - var bDiff = Point3d.subtract(top.trans, right.trans); - var crossproduct = Point3d.crossProduct(aDiff, bDiff); - var len = crossproduct.length(); - // FIXME: there is a bug with determining the surface side (shadow or colored) + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); - topSideVisible = crossproduct.z > 0; - } else { - topSideVisible = true; - } + // Prevent default actions caused by mouse wheel. + // That might be ugly, but we handle scrolls somehow + // anyway, so don't bother here.. + util.preventDefault(event); + }; - if (topSideVisible) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - s = 1; // saturation + /** + * Test whether a point lies inside given 2D triangle + * @param {Point2d} point + * @param {Point2d[]} triangle + * @return {boolean} Returns true if given point lies inside or on the edge of the triangle + * @private + */ + Graph3d.prototype._insideTriangle = function (point, triangle) { + var a = triangle[0], + b = triangle[1], + c = triangle[2]; - if (this.showShadow) { - v = Math.min(1 + crossproduct.x / len / 2, 1); // value. TODO: scale - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = fillStyle; - } else { - v = 1; - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = this.colorAxis; + function sign(x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; + } + + var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); + var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); + var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); + + // each of the three signs must be either equal to each other or zero + return (as == 0 || bs == 0 || as == bs) && (bs == 0 || cs == 0 || bs == cs) && (as == 0 || cs == 0 || as == cs); + }; + + /** + * Find a data point close to given screen position (x, y) + * @param {Number} x + * @param {Number} y + * @return {Object | null} The closest data point or null if not close to any data point + * @private + */ + Graph3d.prototype._dataPointFromXY = function (x, y) { + var i, + distMax = 100, + // px + dataPoint = null, + closestDataPoint = null, + closestDist = null, + center = new Point2d(x, y); + + if (this.style === Graph3d.STYLE.BAR || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { + // the data points are ordered from far away to closest + for (i = this.dataPoints.length - 1; i >= 0; i--) { + dataPoint = this.dataPoints[i]; + var surfaces = dataPoint.surfaces; + if (surfaces) { + for (var s = surfaces.length - 1; s >= 0; s--) { + // split each surface in two triangles, and see if the center point is inside one of these + var surface = surfaces[s]; + var corners = surface.corners; + var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; + var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; + if (this._insideTriangle(center, triangle1) || this._insideTriangle(center, triangle2)) { + // return immediately at the first hit + return dataPoint; } - } else { - fillStyle = 'gray'; - strokeStyle = this.colorAxis; } - lineWidth = 0.5; - - ctx.lineWidth = lineWidth; - ctx.fillStyle = fillStyle; - ctx.strokeStyle = strokeStyle; - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.lineTo(cross.screen.x, cross.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); } } } else { - // grid style + // find the closest data point, using distance to the center of the point on 2d screen for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; + dataPoint = this.dataPoints[i]; + var point = dataPoint.screen; + if (point) { + var distX = Math.abs(x - point.x); + var distY = Math.abs(y - point.y); + var dist = Math.sqrt(distX * distX + distY * distY); - if (point !== undefined) { - if (this.showPerspective) { - lineWidth = 2 / -point.trans.z; - } else { - lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + if ((closestDist === null || dist < closestDist) && dist < distMax) { + closestDist = dist; + closestDataPoint = dataPoint; } } - - if (point !== undefined && right !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.stroke(); - } - - if (point !== undefined && top !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + top.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.stroke(); - } } } + + return closestDataPoint; }; /** - * Draw all datapoints as dots. - * This function can be used when the style is 'dot' or 'dot-line' + * Display a tooltip for given data point + * @param {Object} dataPoint + * @private */ - Graph3d.prototype._redrawDataDot = function () { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i; + Graph3d.prototype._showTooltip = function (dataPoint) { + var content, line, dot; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? + if (!this.tooltip) { + content = document.createElement('div'); + content.style.position = 'absolute'; + content.style.padding = '10px'; + content.style.border = '1px solid #4d4d4d'; + content.style.color = '#1a1a1a'; + content.style.background = 'rgba(255,255,255,0.7)'; + content.style.borderRadius = '2px'; + content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + line = document.createElement('div'); + line.style.position = 'absolute'; + line.style.height = '40px'; + line.style.width = '0'; + line.style.borderLeft = '1px solid #4d4d4d'; - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + dot = document.createElement('div'); + dot.style.position = 'absolute'; + dot.style.height = '0'; + dot.style.width = '0'; + dot.style.border = '5px solid #4d4d4d'; + dot.style.borderRadius = '5px'; - // order the translated points by depth - var sortDepth = function sortDepth(a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + this.tooltip = { + dataPoint: null, + dom: { + content: content, + line: line, + dot: dot + } + }; + } else { + content = this.tooltip.dom.content; + line = this.tooltip.dom.line; + dot = this.tooltip.dom.dot; + } - // draw the datapoints as colored circles - var dotSize = this.frame.clientWidth * 0.02; // px - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; + this._hideTooltip(); - if (this.style === Graph3d.STYLE.DOTLINE) { - // draw a vertical line from the bottom to the graph value - //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); - var from = this._convert3Dto2D(point.bottom); - ctx.lineWidth = 1; - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(point.screen.x, point.screen.y); - ctx.stroke(); - } + this.tooltip.dataPoint = dataPoint; + if (typeof this.showTooltip === 'function') { + content.innerHTML = this.showTooltip(dataPoint.point); + } else { + content.innerHTML = '' + '' + '' + '' + '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; + } - // calculate radius for the circle - var size; - if (this.style === Graph3d.STYLE.DOTSIZE) { - size = dotSize / 2 + 2 * dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); - } else { - size = dotSize; - } + content.style.left = '0'; + content.style.top = '0'; + this.frame.appendChild(content); + this.frame.appendChild(line); + this.frame.appendChild(dot); - var radius; - if (this.showPerspective) { - radius = size / -point.trans.z; - } else { - radius = size * -(this.eye.z / this.camera.getArmLength()); - } - if (radius < 0) { - radius = 0; - } + // calculate sizes + var contentWidth = content.offsetWidth; + var contentHeight = content.offsetHeight; + var lineHeight = line.offsetHeight; + var dotWidth = dot.offsetWidth; + var dotHeight = dot.offsetHeight; - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.DOTCOLOR) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } else if (this.style === Graph3d.STYLE.DOTSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } + var left = dataPoint.screen.x - contentWidth / 2; + left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); - // draw the circle - ctx.lineWidth = 1; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - ctx.beginPath(); - ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI * 2, true); - ctx.fill(); - ctx.stroke(); - } + line.style.left = dataPoint.screen.x + 'px'; + line.style.top = dataPoint.screen.y - lineHeight + 'px'; + content.style.left = left + 'px'; + content.style.top = dataPoint.screen.y - lineHeight - contentHeight + 'px'; + dot.style.left = dataPoint.screen.x - dotWidth / 2 + 'px'; + dot.style.top = dataPoint.screen.y - dotHeight / 2 + 'px'; }; /** - * Draw all datapoints as bars. - * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' + * Hide the tooltip when displayed + * @private */ - Graph3d.prototype._redrawDataBar = function () { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i, j, surface, corners; - - if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? - - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; - - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } - - // order the translated points by depth - var sortDepth = function sortDepth(a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); - - // draw the datapoints as bars - var xWidth = this.xBarWidth / 2; - var yWidth = this.yBarWidth / 2; - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; - - // determine color - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.BARCOLOR) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } else if (this.style === Graph3d.STYLE.BARSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } + Graph3d.prototype._hideTooltip = function () { + if (this.tooltip) { + this.tooltip.dataPoint = null; - // calculate size for the bar - if (this.style === Graph3d.STYLE.BARSIZE) { - xWidth = this.xBarWidth / 2 * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - yWidth = this.yBarWidth / 2 * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + for (var prop in this.tooltip.dom) { + if (this.tooltip.dom.hasOwnProperty(prop)) { + var elem = this.tooltip.dom[prop]; + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } } + } + }; - // calculate all corner points - var me = this; - var point3d = point.point; - var top = [{ point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z) }, { point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z) }, { point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z) }, { point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z) }]; - var bottom = [{ point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin) }, { point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin) }, { point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin) }, { point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin) }]; + /**--------------------------------------------------------------------------**/ - // calculate screen location of the points - top.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); - bottom.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); + /** + * Get the horizontal mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse x + */ + function getMouseX(event) { + if ('clientX' in event) return event.clientX; + return event.targetTouches[0] && event.targetTouches[0].clientX || 0; + } - // create five sides, calculate both corner points and center points - var surfaces = [{ corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point) }, { corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point) }, { corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point) }, { corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point) }, { corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point) }]; - point.surfaces = surfaces; + /** + * Get the vertical mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse y + */ + function getMouseY(event) { + if ('clientY' in event) return event.clientY; + return event.targetTouches[0] && event.targetTouches[0].clientY || 0; + } - // calculate the distance of each of the surface centers to the camera - for (j = 0; j < surfaces.length; j++) { - surface = surfaces[j]; - var transCenter = this._convertPointToTranslation(surface.center); - surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; - // TODO: this dept calculation doesn't work 100% of the cases due to perspective, - // but the current solution is fast/simple and works in 99.9% of all cases - // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) - } + module.exports = Graph3d; - // order the surfaces by their (translated) depth - surfaces.sort(function (a, b) { - var diff = b.dist - a.dist; - if (diff) return diff; + // use use defaults - // if equal depth, sort the top surface last - if (a.corners === top) return 1; - if (b.corners === top) return -1; +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { - // both are equal - return 0; - }); + 'use strict'; - // draw the ordered surfaces - ctx.lineWidth = 1; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside - for (j = 2; j < surfaces.length; j++) { - surface = surfaces[j]; - corners = surface.corners; - ctx.beginPath(); - ctx.moveTo(corners[3].screen.x, corners[3].screen.y); - ctx.lineTo(corners[0].screen.x, corners[0].screen.y); - ctx.lineTo(corners[1].screen.x, corners[1].screen.y); - ctx.lineTo(corners[2].screen.x, corners[2].screen.y); - ctx.lineTo(corners[3].screen.x, corners[3].screen.y); - ctx.fill(); - ctx.stroke(); - } - } - }; + var Point3d = __webpack_require__(10); /** - * Draw a line through all datapoints. - * This function can be used when the style is 'line' + * @class Camera + * The camera is mounted on a (virtual) camera arm. The camera arm can rotate + * The camera is always looking in the direction of the origin of the arm. + * This way, the camera always rotates around one fixed point, the location + * of the camera arm. + * + * Documentation: + * http://en.wikipedia.org/wiki/3D_projection */ - Graph3d.prototype._redrawDataLine = function () { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, - i; + function Camera() { + this.armLocation = new Point3d(); + this.armRotation = {}; + this.armRotation.horizontal = 0; + this.armRotation.vertical = 0; + this.armLength = 1.7; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) return; // TODO: throw exception? + this.cameraLocation = new Point3d(); + this.cameraRotation = new Point3d(0.5 * Math.PI, 0, 0); - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + this.calculateCameraOrientation(); + } - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; - } + /** + * Set the location (origin) of the arm + * @param {Number} x Normalized value of x + * @param {Number} y Normalized value of y + * @param {Number} z Normalized value of z + */ + Camera.prototype.setArmLocation = function (x, y, z) { + this.armLocation.x = x; + this.armLocation.y = y; + this.armLocation.z = z; - // start the line - if (this.dataPoints.length > 0) { - point = this.dataPoints[0]; + this.calculateCameraOrientation(); + }; - ctx.lineWidth = 1; // TODO: make customizable - ctx.strokeStyle = 'blue'; // TODO: make customizable - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); + /** + * Set the rotation of the camera arm + * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. + */ + Camera.prototype.setArmRotation = function (horizontal, vertical) { + if (horizontal !== undefined) { + this.armRotation.horizontal = horizontal; } - // draw the datapoints as colored circles - for (i = 1; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - ctx.lineTo(point.screen.x, point.screen.y); + if (vertical !== undefined) { + this.armRotation.vertical = vertical; + if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; + if (this.armRotation.vertical > 0.5 * Math.PI) this.armRotation.vertical = 0.5 * Math.PI; } - // finish the line - if (this.dataPoints.length > 0) { - ctx.stroke(); - } - }; - - /** - * Start a moving operation inside the provided parent element - * @param {Event} event The event that occurred (required for - * retrieving the mouse position) - */ - Graph3d.prototype._onMouseDown = function (event) { - event = event || window.event; - - // check if mouse is still down (may be up when focus is lost for example - // in an iframe) - if (this.leftButtonDown) { - this._onMouseUp(event); - } - - // only react on left mouse button down - this.leftButtonDown = event.which ? event.which === 1 : event.button === 1; - if (!this.leftButtonDown && !this.touchDown) return; - - // get mouse position (different code for IE and all other browsers) - this.startMouseX = getMouseX(event); - this.startMouseY = getMouseY(event); - - this.startStart = new Date(this.start); - this.startEnd = new Date(this.end); - this.startArmRotation = this.camera.getArmRotation(); - - this.frame.style.cursor = 'move'; - - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) { - me._onMouseMove(event); - }; - this.onmouseup = function (event) { - me._onMouseUp(event); - }; - util.addEventListener(document, 'mousemove', me.onmousemove); - util.addEventListener(document, 'mouseup', me.onmouseup); - util.preventDefault(event); - }; - - /** - * Perform moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {Event} event Well, eehh, the event - */ - Graph3d.prototype._onMouseMove = function (event) { - event = event || window.event; - - // calculate change in mouse position - var diffX = parseFloat(getMouseX(event)) - this.startMouseX; - var diffY = parseFloat(getMouseY(event)) - this.startMouseY; - - var horizontalNew = this.startArmRotation.horizontal + diffX / 200; - var verticalNew = this.startArmRotation.vertical + diffY / 200; - - var snapAngle = 4; // degrees - var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); - - // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... - // the -0.001 is to take care that the vertical axis is always drawn at the left front corner - if (Math.abs(Math.sin(horizontalNew)) < snapValue) { - horizontalNew = Math.round(horizontalNew / Math.PI) * Math.PI - 0.001; - } - if (Math.abs(Math.cos(horizontalNew)) < snapValue) { - horizontalNew = (Math.round(horizontalNew / Math.PI - 0.5) + 0.5) * Math.PI - 0.001; - } - - // snap vertically to nice angles - if (Math.abs(Math.sin(verticalNew)) < snapValue) { - verticalNew = Math.round(verticalNew / Math.PI) * Math.PI; - } - if (Math.abs(Math.cos(verticalNew)) < snapValue) { - verticalNew = (Math.round(verticalNew / Math.PI - 0.5) + 0.5) * Math.PI; - } - - this.camera.setArmRotation(horizontalNew, verticalNew); - this.redraw(); - - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); - - util.preventDefault(event); - }; - - /** - * Stop moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {event} event The event - */ - Graph3d.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; - this.leftButtonDown = false; - - // remove event listeners here - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); - }; - - /** - * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point - * @param {Event} event A mouse move event - */ - Graph3d.prototype._onTooltip = function (event) { - var delay = 300; // ms - var boundingRect = this.frame.getBoundingClientRect(); - var mouseX = getMouseX(event) - boundingRect.left; - var mouseY = getMouseY(event) - boundingRect.top; - - if (!this.showTooltip) { - return; - } - - if (this.tooltipTimeout) { - clearTimeout(this.tooltipTimeout); - } - - // (delayed) display of a tooltip only if no mouse button is down - if (this.leftButtonDown) { - this._hideTooltip(); - return; - } - - if (this.tooltip && this.tooltip.dataPoint) { - // tooltip is currently visible - var dataPoint = this._dataPointFromXY(mouseX, mouseY); - if (dataPoint !== this.tooltip.dataPoint) { - // datapoint changed - if (dataPoint) { - this._showTooltip(dataPoint); - } else { - this._hideTooltip(); - } - } - } else { - // tooltip is currently not visible - var me = this; - this.tooltipTimeout = setTimeout(function () { - me.tooltipTimeout = null; - - // show a tooltip if we have a data point - var dataPoint = me._dataPointFromXY(mouseX, mouseY); - if (dataPoint) { - me._showTooltip(dataPoint); - } - }, delay); - } - }; - - /** - * Event handler for touchstart event on mobile devices - */ - Graph3d.prototype._onTouchStart = function (event) { - this.touchDown = true; - - var me = this; - this.ontouchmove = function (event) { - me._onTouchMove(event); - }; - this.ontouchend = function (event) { - me._onTouchEnd(event); - }; - util.addEventListener(document, 'touchmove', me.ontouchmove); - util.addEventListener(document, 'touchend', me.ontouchend); - - this._onMouseDown(event); - }; - - /** - * Event handler for touchmove event on mobile devices - */ - Graph3d.prototype._onTouchMove = function (event) { - this._onMouseMove(event); - }; - - /** - * Event handler for touchend event on mobile devices - */ - Graph3d.prototype._onTouchEnd = function (event) { - this.touchDown = false; - - util.removeEventListener(document, 'touchmove', this.ontouchmove); - util.removeEventListener(document, 'touchend', this.ontouchend); - - this._onMouseUp(event); - }; - - /** - * Event handler for mouse wheel event, used to zoom the graph - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {event} event The event - */ - Graph3d.prototype._onWheel = function (event) { - if (!event) /* For IE. */ - event = window.event; - - // retrieve delta - var delta = 0; - if (event.wheelDelta) { - /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { - /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail / 3; - } - - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - var oldLength = this.camera.getArmLength(); - var newLength = oldLength * (1 - delta / 10); - - this.camera.setArmLength(newLength); - this.redraw(); - - this._hideTooltip(); - } - - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); - - // Prevent default actions caused by mouse wheel. - // That might be ugly, but we handle scrolls somehow - // anyway, so don't bother here.. - util.preventDefault(event); - }; - - /** - * Test whether a point lies inside given 2D triangle - * @param {Point2d} point - * @param {Point2d[]} triangle - * @return {boolean} Returns true if given point lies inside or on the edge of the triangle - * @private - */ - Graph3d.prototype._insideTriangle = function (point, triangle) { - var a = triangle[0], - b = triangle[1], - c = triangle[2]; - - function sign(x) { - return x > 0 ? 1 : x < 0 ? -1 : 0; - } - - var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); - var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); - var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); - - // each of the three signs must be either equal to each other or zero - return (as == 0 || bs == 0 || as == bs) && (bs == 0 || cs == 0 || bs == cs) && (as == 0 || cs == 0 || as == cs); - }; - - /** - * Find a data point close to given screen position (x, y) - * @param {Number} x - * @param {Number} y - * @return {Object | null} The closest data point or null if not close to any data point - * @private - */ - Graph3d.prototype._dataPointFromXY = function (x, y) { - var i, - distMax = 100, - // px - dataPoint = null, - closestDataPoint = null, - closestDist = null, - center = new Point2d(x, y); - - if (this.style === Graph3d.STYLE.BAR || this.style === Graph3d.STYLE.BARCOLOR || this.style === Graph3d.STYLE.BARSIZE) { - // the data points are ordered from far away to closest - for (i = this.dataPoints.length - 1; i >= 0; i--) { - dataPoint = this.dataPoints[i]; - var surfaces = dataPoint.surfaces; - if (surfaces) { - for (var s = surfaces.length - 1; s >= 0; s--) { - // split each surface in two triangles, and see if the center point is inside one of these - var surface = surfaces[s]; - var corners = surface.corners; - var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; - var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; - if (this._insideTriangle(center, triangle1) || this._insideTriangle(center, triangle2)) { - // return immediately at the first hit - return dataPoint; - } - } - } - } - } else { - // find the closest data point, using distance to the center of the point on 2d screen - for (i = 0; i < this.dataPoints.length; i++) { - dataPoint = this.dataPoints[i]; - var point = dataPoint.screen; - if (point) { - var distX = Math.abs(x - point.x); - var distY = Math.abs(y - point.y); - var dist = Math.sqrt(distX * distX + distY * distY); - - if ((closestDist === null || dist < closestDist) && dist < distMax) { - closestDist = dist; - closestDataPoint = dataPoint; - } - } - } - } - - return closestDataPoint; - }; - - /** - * Display a tooltip for given data point - * @param {Object} dataPoint - * @private - */ - Graph3d.prototype._showTooltip = function (dataPoint) { - var content, line, dot; - - if (!this.tooltip) { - content = document.createElement('div'); - content.style.position = 'absolute'; - content.style.padding = '10px'; - content.style.border = '1px solid #4d4d4d'; - content.style.color = '#1a1a1a'; - content.style.background = 'rgba(255,255,255,0.7)'; - content.style.borderRadius = '2px'; - content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; - - line = document.createElement('div'); - line.style.position = 'absolute'; - line.style.height = '40px'; - line.style.width = '0'; - line.style.borderLeft = '1px solid #4d4d4d'; - - dot = document.createElement('div'); - dot.style.position = 'absolute'; - dot.style.height = '0'; - dot.style.width = '0'; - dot.style.border = '5px solid #4d4d4d'; - dot.style.borderRadius = '5px'; - - this.tooltip = { - dataPoint: null, - dom: { - content: content, - line: line, - dot: dot - } - }; - } else { - content = this.tooltip.dom.content; - line = this.tooltip.dom.line; - dot = this.tooltip.dom.dot; - } - - this._hideTooltip(); - - this.tooltip.dataPoint = dataPoint; - if (typeof this.showTooltip === 'function') { - content.innerHTML = this.showTooltip(dataPoint.point); - } else { - content.innerHTML = '' + '' + '' + '' + '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; - } - - content.style.left = '0'; - content.style.top = '0'; - this.frame.appendChild(content); - this.frame.appendChild(line); - this.frame.appendChild(dot); - - // calculate sizes - var contentWidth = content.offsetWidth; - var contentHeight = content.offsetHeight; - var lineHeight = line.offsetHeight; - var dotWidth = dot.offsetWidth; - var dotHeight = dot.offsetHeight; - - var left = dataPoint.screen.x - contentWidth / 2; - left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); - - line.style.left = dataPoint.screen.x + 'px'; - line.style.top = dataPoint.screen.y - lineHeight + 'px'; - content.style.left = left + 'px'; - content.style.top = dataPoint.screen.y - lineHeight - contentHeight + 'px'; - dot.style.left = dataPoint.screen.x - dotWidth / 2 + 'px'; - dot.style.top = dataPoint.screen.y - dotHeight / 2 + 'px'; - }; - - /** - * Hide the tooltip when displayed - * @private - */ - Graph3d.prototype._hideTooltip = function () { - if (this.tooltip) { - this.tooltip.dataPoint = null; - - for (var prop in this.tooltip.dom) { - if (this.tooltip.dom.hasOwnProperty(prop)) { - var elem = this.tooltip.dom[prop]; - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - } - } - }; - - /**--------------------------------------------------------------------------**/ - - /** - * Get the horizontal mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse x - */ - function getMouseX(event) { - if ('clientX' in event) return event.clientX; - return event.targetTouches[0] && event.targetTouches[0].clientX || 0; - } - - /** - * Get the vertical mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse y - */ - function getMouseY(event) { - if ('clientY' in event) return event.clientY; - return event.targetTouches[0] && event.targetTouches[0].clientY || 0; - } - - module.exports = Graph3d; - - // use use defaults - -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Point3d = __webpack_require__(10); - - /** - * @class Camera - * The camera is mounted on a (virtual) camera arm. The camera arm can rotate - * The camera is always looking in the direction of the origin of the arm. - * This way, the camera always rotates around one fixed point, the location - * of the camera arm. - * - * Documentation: - * http://en.wikipedia.org/wiki/3D_projection - */ - function Camera() { - this.armLocation = new Point3d(); - this.armRotation = {}; - this.armRotation.horizontal = 0; - this.armRotation.vertical = 0; - this.armLength = 1.7; - - this.cameraLocation = new Point3d(); - this.cameraRotation = new Point3d(0.5 * Math.PI, 0, 0); - - this.calculateCameraOrientation(); - } - - /** - * Set the location (origin) of the arm - * @param {Number} x Normalized value of x - * @param {Number} y Normalized value of y - * @param {Number} z Normalized value of z - */ - Camera.prototype.setArmLocation = function (x, y, z) { - this.armLocation.x = x; - this.armLocation.y = y; - this.armLocation.z = z; - - this.calculateCameraOrientation(); - }; - - /** - * Set the rotation of the camera arm - * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - */ - Camera.prototype.setArmRotation = function (horizontal, vertical) { - if (horizontal !== undefined) { - this.armRotation.horizontal = horizontal; - } - - if (vertical !== undefined) { - this.armRotation.vertical = vertical; - if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; - if (this.armRotation.vertical > 0.5 * Math.PI) this.armRotation.vertical = 0.5 * Math.PI; - } - - if (horizontal !== undefined || vertical !== undefined) { - this.calculateCameraOrientation(); + if (horizontal !== undefined || vertical !== undefined) { + this.calculateCameraOrientation(); } }; @@ -5827,7 +5224,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @constructor Slider @@ -6321,7 +5718,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(69); var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); @@ -6762,7 +6159,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(69); var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); @@ -7777,7 +7174,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var hammerUtil = __webpack_require__(48); var moment = __webpack_require__(40); var Component = __webpack_require__(25); @@ -8579,7 +7976,7 @@ return /******/ (function(modules) { // webpackBootstrap var moment = __webpack_require__(40); var DateUtil = __webpack_require__(15); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @constructor TimeStep @@ -9267,8 +8664,230 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + var Item = __webpack_require__(21); + var util = __webpack_require__(57); + + /** + * @constructor BoxItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options + */ + function BoxItem(data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 + }, + line: { + width: 0, + height: 0 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } + } + + Item.call(this, data, conversion, options); + } + + BoxItem.prototype = new Item(null, null, null); + + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + BoxItem.prototype.isVisible = function (range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return this.data.start > range.start - interval && this.data.start < range.end + interval; + }; + + /** + * Repaint the item + */ + BoxItem.prototype.redraw = function () { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + + // create main box + dom.box = document.createElement('DIV'); + + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'vis-item-content'; + dom.box.appendChild(dom.content); + + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'vis-line'; + + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'vis-dot'; + + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; + } + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); + foreground.appendChild(dom.box); + } + if (!dom.line.parentNode) { + var background = this.parent.dom.background; + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); + background.appendChild(dom.line); + } + if (!dom.dot.parentNode) { + var axis = this.parent.dom.axis; + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); + axis.appendChild(dom.dot); + } + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); + + // update class + var className = (this.data.className ? ' ' + this.data.className : '') + (this.selected ? ' vis-selected' : ''); + dom.box.className = 'vis-item vis-box' + className; + dom.line.className = 'vis-item vis-line' + className; + dom.dot.className = 'vis-item vis-dot' + className; + + // recalculate size + this.props.dot.height = dom.dot.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.line.width = dom.line.offsetWidth; + this.width = dom.box.offsetWidth; + this.height = dom.box.offsetHeight; + + this.dirty = false; + } + + this._repaintDeleteButton(dom.box); + }; + + /** + * Show the item in the DOM (when not already displayed). The items DOM will + * be created when needed. + */ + BoxItem.prototype.show = function () { + if (!this.displayed) { + this.redraw(); + } + }; + + /** + * Hide the item from the DOM (when visible) + */ + BoxItem.prototype.hide = function () { + if (this.displayed) { + var dom = this.dom; + + if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); + if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); + if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + + this.displayed = false; + } + }; + + /** + * Reposition the item horizontally + * @Override + */ + BoxItem.prototype.repositionX = function () { + var start = this.conversion.toScreen(this.data.start); + var align = this.options.align; + var left; + + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; + } else if (align == 'left') { + this.left = start; + } else { + // default or 'center' + this.left = start - this.width / 2; + } + + // reposition box + this.dom.box.style.left = this.left + 'px'; + + // reposition line + this.dom.line.style.left = start - this.props.line.width / 2 + 'px'; + + // reposition dot + this.dom.dot.style.left = start - this.props.dot.width / 2 + 'px'; + }; + + /** + * Reposition the item vertically + * @Override + */ + BoxItem.prototype.repositionY = function () { + var orientation = this.options.orientation.item; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; + + if (orientation == 'top') { + box.style.top = (this.top || 0) + 'px'; + + line.style.top = '0'; + line.style.height = this.parent.top + this.top + 1 + 'px'; + line.style.bottom = ''; + } else { + // orientation 'bottom' + var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty + var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; + + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = itemSetHeight - lineHeight + 'px'; + line.style.bottom = '0'; + } + + dot.style.top = -this.props.dot.height / 2 + 'px'; + }; + + module.exports = BoxItem; + +/***/ }, +/* 21 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @constructor Item @@ -9536,13 +9155,13 @@ return /******/ (function(modules) { // webpackBootstrap // should be implemented by the item /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var Hammer = __webpack_require__(41); - var Item = __webpack_require__(20); + var Item = __webpack_require__(21); var BackgroundGroup = __webpack_require__(31); var RangeItem = __webpack_require__(24); @@ -9756,235 +9375,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BackgroundItem; -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Item = __webpack_require__(20); - var util = __webpack_require__(1); - - /** - * @constructor BoxItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options - */ - function BoxItem(data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 - } - }; - - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } - } - - Item.call(this, data, conversion, options); - } - - BoxItem.prototype = new Item(null, null, null); - - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - BoxItem.prototype.isVisible = function (range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return this.data.start > range.start - interval && this.data.start < range.end + interval; - }; - - /** - * Repaint the item - */ - BoxItem.prototype.redraw = function () { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // create main box - dom.box = document.createElement('DIV'); - - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'vis-item-content'; - dom.box.appendChild(dom.content); - - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'vis-line'; - - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'vis-dot'; - - // attach this item as attribute - dom.box['timeline-item'] = this; - - this.dirty = true; - } - - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); - foreground.appendChild(dom.box); - } - if (!dom.line.parentNode) { - var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw item: parent has no background container element'); - background.appendChild(dom.line); - } - if (!dom.dot.parentNode) { - var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); - axis.appendChild(dom.dot); - } - this.displayed = true; - - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); - - // update class - var className = (this.data.className ? ' ' + this.data.className : '') + (this.selected ? ' vis-selected' : ''); - dom.box.className = 'vis-item vis-box' + className; - dom.line.className = 'vis-item vis-line' + className; - dom.dot.className = 'vis-item vis-dot' + className; - - // recalculate size - this.props.dot.height = dom.dot.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.line.width = dom.line.offsetWidth; - this.width = dom.box.offsetWidth; - this.height = dom.box.offsetHeight; - - this.dirty = false; - } - - this._repaintDeleteButton(dom.box); - }; - - /** - * Show the item in the DOM (when not already displayed). The items DOM will - * be created when needed. - */ - BoxItem.prototype.show = function () { - if (!this.displayed) { - this.redraw(); - } - }; - - /** - * Hide the item from the DOM (when visible) - */ - BoxItem.prototype.hide = function () { - if (this.displayed) { - var dom = this.dom; - - if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); - if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); - if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); - - this.displayed = false; - } - }; - - /** - * Reposition the item horizontally - * @Override - */ - BoxItem.prototype.repositionX = function () { - var start = this.conversion.toScreen(this.data.start); - var align = this.options.align; - var left; - - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; - } else if (align == 'left') { - this.left = start; - } else { - // default or 'center' - this.left = start - this.width / 2; - } - - // reposition box - this.dom.box.style.left = this.left + 'px'; - - // reposition line - this.dom.line.style.left = start - this.props.line.width / 2 + 'px'; - - // reposition dot - this.dom.dot.style.left = start - this.props.dot.width / 2 + 'px'; - }; - - /** - * Reposition the item vertically - * @Override - */ - BoxItem.prototype.repositionY = function () { - var orientation = this.options.orientation.item; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; - - if (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; - - line.style.top = '0'; - line.style.height = this.parent.top + this.top + 1 + 'px'; - line.style.bottom = ''; - } else { - // orientation 'bottom' - var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty - var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - - box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; - line.style.top = itemSetHeight - lineHeight + 'px'; - line.style.bottom = '0'; - } - - dot.style.top = -this.props.dot.height / 2 + 'px'; - }; - - module.exports = BoxItem; - /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Item = __webpack_require__(20); + var Item = __webpack_require__(21); /** * @constructor PointItem @@ -10170,7 +9567,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Hammer = __webpack_require__(41); - var Item = __webpack_require__(20); + var Item = __webpack_require__(21); /** * @constructor RangeItem @@ -10523,7 +9920,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Component = __webpack_require__(25); var moment = __webpack_require__(40); var locales = __webpack_require__(49); @@ -10700,7 +10097,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Component = __webpack_require__(25); var moment = __webpack_require__(40); var locales = __webpack_require__(49); @@ -10938,7 +10335,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DOMutil = __webpack_require__(2); var Component = __webpack_require__(25); var DataStep = __webpack_require__(16); @@ -11542,7 +10939,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DOMutil = __webpack_require__(2); var Line = __webpack_require__(50); var Bar = __webpack_require__(51); @@ -11736,7 +11133,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var stack = __webpack_require__(18); var RangeItem = __webpack_require__(24); @@ -12322,7 +11719,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Group = __webpack_require__(30); /** @@ -12387,17 +11784,17 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); 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); - var BoxItem = __webpack_require__(22); + var BoxItem = __webpack_require__(20); var PointItem = __webpack_require__(23); var RangeItem = __webpack_require__(24); - var BackgroundItem = __webpack_require__(21); + var BackgroundItem = __webpack_require__(22); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items var BACKGROUND = '__background__'; // reserved group id for background items without group @@ -13995,7 +13392,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DOMutil = __webpack_require__(2); var Component = __webpack_require__(25); @@ -14209,7 +13606,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DOMutil = __webpack_require__(2); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -15185,7 +14582,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Component = __webpack_require__(25); var TimeStep = __webpack_require__(19); var DateUtil = __webpack_require__(15); @@ -15623,74 +15020,74 @@ return /******/ (function(modules) { // webpackBootstrap /* 36 */ /***/ function(module, exports, __webpack_require__) { + // Load custom shapes into CanvasRenderingContext2D 'use strict'; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var _Groups = __webpack_require__(53); + var _modulesGroups = __webpack_require__(53); - var _Groups2 = _interopRequireDefault(_Groups); + var _modulesGroups2 = _interopRequireDefault(_modulesGroups); - var _NodesHandler = __webpack_require__(54); + var _modulesNodesHandler = __webpack_require__(54); - var _NodesHandler2 = _interopRequireDefault(_NodesHandler); + var _modulesNodesHandler2 = _interopRequireDefault(_modulesNodesHandler); - var _EdgesHandler = __webpack_require__(55); + var _modulesEdgesHandler = __webpack_require__(55); - var _EdgesHandler2 = _interopRequireDefault(_EdgesHandler); + var _modulesEdgesHandler2 = _interopRequireDefault(_modulesEdgesHandler); - var _PhysicsEngine = __webpack_require__(56); + var _modulesPhysicsEngine = __webpack_require__(56); - var _PhysicsEngine2 = _interopRequireDefault(_PhysicsEngine); + var _modulesPhysicsEngine2 = _interopRequireDefault(_modulesPhysicsEngine); - var _ClusterEngine = __webpack_require__(57); + var _modulesClustering = __webpack_require__(1); - var _ClusterEngine2 = _interopRequireDefault(_ClusterEngine); + var _modulesClustering2 = _interopRequireDefault(_modulesClustering); - var _CanvasRenderer = __webpack_require__(58); + var _modulesCanvasRenderer = __webpack_require__(58); - var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer); + var _modulesCanvasRenderer2 = _interopRequireDefault(_modulesCanvasRenderer); - var _Canvas = __webpack_require__(59); + var _modulesCanvas = __webpack_require__(59); - var _Canvas2 = _interopRequireDefault(_Canvas); + var _modulesCanvas2 = _interopRequireDefault(_modulesCanvas); - var _View = __webpack_require__(60); + var _modulesView = __webpack_require__(60); - var _View2 = _interopRequireDefault(_View); + var _modulesView2 = _interopRequireDefault(_modulesView); - var _InteractionHandler = __webpack_require__(61); + var _modulesInteractionHandler = __webpack_require__(61); - var _InteractionHandler2 = _interopRequireDefault(_InteractionHandler); + var _modulesInteractionHandler2 = _interopRequireDefault(_modulesInteractionHandler); - var _SelectionHandler = __webpack_require__(62); + var _modulesSelectionHandler = __webpack_require__(62); - var _SelectionHandler2 = _interopRequireDefault(_SelectionHandler); + var _modulesSelectionHandler2 = _interopRequireDefault(_modulesSelectionHandler); - var _LayoutEngine = __webpack_require__(63); + var _modulesLayoutEngine = __webpack_require__(63); - var _LayoutEngine2 = _interopRequireDefault(_LayoutEngine); + var _modulesLayoutEngine2 = _interopRequireDefault(_modulesLayoutEngine); - var _ManipulationSystem = __webpack_require__(64); + var _modulesManipulationSystem = __webpack_require__(64); - var _ManipulationSystem2 = _interopRequireDefault(_ManipulationSystem); + var _modulesManipulationSystem2 = _interopRequireDefault(_modulesManipulationSystem); - var _Configurator = __webpack_require__(44); + var _sharedConfigurator = __webpack_require__(44); - var _Configurator2 = _interopRequireDefault(_Configurator); + var _sharedConfigurator2 = _interopRequireDefault(_sharedConfigurator); - var _Validator = __webpack_require__(45); + var _sharedValidator = __webpack_require__(45); - var _Validator2 = _interopRequireDefault(_Validator); + var _sharedValidator2 = _interopRequireDefault(_sharedValidator); - var _allOptions$configureOptions = __webpack_require__(65); + var _optionsJs = __webpack_require__(65); - // Load custom shapes into CanvasRenderingContext2D __webpack_require__(66); var Emitter = __webpack_require__(69); var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(38); @@ -15775,25 +15172,25 @@ return /******/ (function(modules) { // webpackBootstrap this.images = new Images(function () { return _this.body.emitter.emit('_requestRedraw'); }); // object with images - this.groups = new _Groups2['default'](); // object with groups - this.canvas = new _Canvas2['default'](this.body); // DOM handler - this.selectionHandler = new _SelectionHandler2['default'](this.body, this.canvas); // Selection handler - this.interactionHandler = new _InteractionHandler2['default'](this.body, this.canvas, this.selectionHandler); // Interaction handler handles all the hammer bindings (that are bound by canvas), key - this.view = new _View2['default'](this.body, this.canvas); // camera handler, does animations and zooms - this.renderer = new _CanvasRenderer2['default'](this.body, this.canvas); // renderer, starts renderloop, has events that modules can hook into - this.physics = new _PhysicsEngine2['default'](this.body); // physics engine, does all the simulations - this.layoutEngine = new _LayoutEngine2['default'](this.body); // layout engine for inital layout and hierarchical layout - this.clustering = new _ClusterEngine2['default'](this.body); // clustering api - this.manipulation = new _ManipulationSystem2['default'](this.body, this.canvas, this.selectionHandler); // data manipulation system - - this.nodesHandler = new _NodesHandler2['default'](this.body, this.images, this.groups, this.layoutEngine); // Handle adding, deleting and updating of nodes as well as global options - this.edgesHandler = new _EdgesHandler2['default'](this.body, this.images, this.groups); // Handle adding, deleting and updating of edges as well as global options + this.groups = new _modulesGroups2['default'](); // object with groups + this.canvas = new _modulesCanvas2['default'](this.body); // DOM handler + this.selectionHandler = new _modulesSelectionHandler2['default'](this.body, this.canvas); // Selection handler + this.interactionHandler = new _modulesInteractionHandler2['default'](this.body, this.canvas, this.selectionHandler); // Interaction handler handles all the hammer bindings (that are bound by canvas), key + this.view = new _modulesView2['default'](this.body, this.canvas); // camera handler, does animations and zooms + this.renderer = new _modulesCanvasRenderer2['default'](this.body, this.canvas); // renderer, starts renderloop, has events that modules can hook into + this.physics = new _modulesPhysicsEngine2['default'](this.body); // physics engine, does all the simulations + this.layoutEngine = new _modulesLayoutEngine2['default'](this.body); // layout engine for inital layout and hierarchical layout + this.clustering = new _modulesClustering2['default'](this.body); // clustering api + this.manipulation = new _modulesManipulationSystem2['default'](this.body, this.canvas, this.selectionHandler); // data manipulation system + + this.nodesHandler = new _modulesNodesHandler2['default'](this.body, this.images, this.groups, this.layoutEngine); // Handle adding, deleting and updating of nodes as well as global options + this.edgesHandler = new _modulesEdgesHandler2['default'](this.body, this.images, this.groups); // Handle adding, deleting and updating of edges as well as global options // create the DOM elements this.canvas._create(); // setup configuration system - this.configurator = new _Configurator2['default'](this, this.body.container, _allOptions$configureOptions.configureOptions, this.canvas.pixelRatio); + this.configurator = new _sharedConfigurator2['default'](this, this.body.container, _optionsJs.configureOptions, this.canvas.pixelRatio); // apply options this.setOptions(options); @@ -15812,9 +15209,9 @@ return /******/ (function(modules) { // webpackBootstrap Network.prototype.setOptions = function (options) { if (options !== undefined) { - var errorFound = _Validator2['default'].validate(options, _allOptions$configureOptions.allOptions); + var errorFound = _sharedValidator2['default'].validate(options, _optionsJs.allOptions); if (errorFound === true) { - console.log('%cErrors have been found in the supplied options object.', _Validator.printStyle); + console.log('%cErrors have been found in the supplied options object.', _sharedValidator.printStyle); } // copy the global fields over @@ -17513,7 +16910,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(69); var Hammer = __webpack_require__(41); var hammerUtil = __webpack_require__(48); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); @@ -18490,7 +17887,7 @@ return /******/ (function(modules) { // webpackBootstrap var _ColorPicker2 = _interopRequireDefault(_ColorPicker); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options. @@ -19159,7 +18556,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var errorFound = false; var allOptions = undefined; @@ -19468,11 +18865,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 46 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -19480,6 +18872,11 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -19685,11 +19082,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 47 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -19697,6 +19089,11 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -20650,7 +20047,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @class Groups @@ -20794,15 +20191,15 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _Node = __webpack_require__(74); + var _componentsNode = __webpack_require__(74); - var _Node2 = _interopRequireDefault(_Node); + var _componentsNode2 = _interopRequireDefault(_componentsNode); - var _Label = __webpack_require__(75); + var _componentsSharedLabel = __webpack_require__(75); - var _Label2 = _interopRequireDefault(_Label); + var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -20932,7 +20329,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'setOptions', value: function setOptions(options) { if (options !== undefined) { - _Node2['default'].parseOptions(this.options, options); + _componentsNode2['default'].parseOptions(this.options, options); // update the shape in all nodes if (options.shape !== undefined) { @@ -20945,7 +20342,7 @@ return /******/ (function(modules) { // webpackBootstrap // update the shape size in all nodes if (options.font !== undefined) { - _Label2['default'].parseOptions(this.options.font, options); + _componentsSharedLabel2['default'].parseOptions(this.options.font, options); for (var nodeId in this.body.nodes) { if (this.body.nodes.hasOwnProperty(nodeId)) { this.body.nodes[nodeId].updateLabelModule(); @@ -21109,7 +20506,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param constructorClass */ value: function create(properties) { - var constructorClass = arguments[1] === undefined ? _Node2['default'] : arguments[1]; + var constructorClass = arguments[1] === undefined ? _componentsNode2['default'] : arguments[1]; return new constructorClass(properties, this.body, this.images, this.groups, this.options); } @@ -21269,15 +20666,15 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _Edge = __webpack_require__(76); + var _componentsEdge = __webpack_require__(76); - var _Edge2 = _interopRequireDefault(_Edge); + var _componentsEdge2 = _interopRequireDefault(_componentsEdge); - var _Label = __webpack_require__(75); + var _componentsSharedLabel = __webpack_require__(75); - var _Label2 = _interopRequireDefault(_Label); + var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -21434,7 +20831,7 @@ return /******/ (function(modules) { // webpackBootstrap value: function setOptions(options) { if (options !== undefined) { // use the parser from the Edge class to fill in all shorthand notations - _Edge2['default'].parseOptions(this.options, options); + _componentsEdge2['default'].parseOptions(this.options, options); // hanlde multiple input cases for color if (options.color !== undefined) { @@ -21454,7 +20851,7 @@ return /******/ (function(modules) { // webpackBootstrap // update fonts in all edges if (options.font !== undefined) { // use the parser from the Label class to fill in all shorthand notations - _Label2['default'].parseOptions(this.options, options); + _componentsSharedLabel2['default'].parseOptions(this.options, options); for (var edgeId in this.body.edges) { if (this.body.edges.hasOwnProperty(edgeId)) { this.body.edges[edgeId].updateLabelModule(); @@ -21628,7 +21025,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'create', value: function create(properties) { - return new _Edge2['default'](properties, this.body, this.options); + return new _componentsEdge2['default'](properties, this.body, this.options); } }, { key: 'markAllEdgesAsDirty', @@ -21703,39 +21100,39 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _BarnesHutSolver = __webpack_require__(77); + var _componentsPhysicsBarnesHutSolver = __webpack_require__(77); - var _BarnesHutSolver2 = _interopRequireDefault(_BarnesHutSolver); + var _componentsPhysicsBarnesHutSolver2 = _interopRequireDefault(_componentsPhysicsBarnesHutSolver); - var _Repulsion = __webpack_require__(78); + var _componentsPhysicsRepulsionSolver = __webpack_require__(78); - var _Repulsion2 = _interopRequireDefault(_Repulsion); + var _componentsPhysicsRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsRepulsionSolver); - var _HierarchicalRepulsion = __webpack_require__(79); + var _componentsPhysicsHierarchicalRepulsionSolver = __webpack_require__(79); - var _HierarchicalRepulsion2 = _interopRequireDefault(_HierarchicalRepulsion); + var _componentsPhysicsHierarchicalRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalRepulsionSolver); - var _SpringSolver = __webpack_require__(80); + var _componentsPhysicsSpringSolver = __webpack_require__(80); - var _SpringSolver2 = _interopRequireDefault(_SpringSolver); + var _componentsPhysicsSpringSolver2 = _interopRequireDefault(_componentsPhysicsSpringSolver); - var _HierarchicalSpringSolver = __webpack_require__(81); + var _componentsPhysicsHierarchicalSpringSolver = __webpack_require__(81); - var _HierarchicalSpringSolver2 = _interopRequireDefault(_HierarchicalSpringSolver); + var _componentsPhysicsHierarchicalSpringSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalSpringSolver); - var _CentralGravitySolver = __webpack_require__(82); + var _componentsPhysicsCentralGravitySolver = __webpack_require__(82); - var _CentralGravitySolver2 = _interopRequireDefault(_CentralGravitySolver); + var _componentsPhysicsCentralGravitySolver2 = _interopRequireDefault(_componentsPhysicsCentralGravitySolver); - var _ForceAtlas2BasedRepulsionSolver = __webpack_require__(83); + var _componentsPhysicsFA2BasedRepulsionSolver = __webpack_require__(83); - var _ForceAtlas2BasedRepulsionSolver2 = _interopRequireDefault(_ForceAtlas2BasedRepulsionSolver); + var _componentsPhysicsFA2BasedRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsFA2BasedRepulsionSolver); - var _ForceAtlas2BasedCentralGravitySolver = __webpack_require__(84); + var _componentsPhysicsFA2BasedCentralGravitySolver = __webpack_require__(84); - var _ForceAtlas2BasedCentralGravitySolver2 = _interopRequireDefault(_ForceAtlas2BasedCentralGravitySolver); + var _componentsPhysicsFA2BasedCentralGravitySolver2 = _interopRequireDefault(_componentsPhysicsFA2BasedCentralGravitySolver); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var PhysicsEngine = (function () { function PhysicsEngine(body) { @@ -21863,25 +21260,25 @@ return /******/ (function(modules) { // webpackBootstrap var options; if (this.options.solver === 'forceAtlas2Based') { options = this.options.forceAtlas2Based; - this.nodesSolver = new _ForceAtlas2BasedRepulsionSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _SpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _ForceAtlas2BasedCentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _componentsPhysicsFA2BasedRepulsionSolver2['default'](this.body, this.physicsBody, options); + this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); + this.gravitySolver = new _componentsPhysicsFA2BasedCentralGravitySolver2['default'](this.body, this.physicsBody, options); } else if (this.options.solver === 'repulsion') { options = this.options.repulsion; - this.nodesSolver = new _Repulsion2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _SpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _CentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _componentsPhysicsRepulsionSolver2['default'](this.body, this.physicsBody, options); + this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); + this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); } else if (this.options.solver === 'hierarchicalRepulsion') { options = this.options.hierarchicalRepulsion; - this.nodesSolver = new _HierarchicalRepulsion2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _HierarchicalSpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _CentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _componentsPhysicsHierarchicalRepulsionSolver2['default'](this.body, this.physicsBody, options); + this.edgesSolver = new _componentsPhysicsHierarchicalSpringSolver2['default'](this.body, this.physicsBody, options); + this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); } else { // barnesHut options = this.options.barnesHut; - this.nodesSolver = new _BarnesHutSolver2['default'](this.body, this.physicsBody, options); - this.edgesSolver = new _SpringSolver2['default'](this.body, this.physicsBody, options); - this.gravitySolver = new _CentralGravitySolver2['default'](this.body, this.physicsBody, options); + this.nodesSolver = new _componentsPhysicsBarnesHutSolver2['default'](this.body, this.physicsBody, options); + this.edgesSolver = new _componentsPhysicsSpringSolver2['default'](this.body, this.physicsBody, options); + this.gravitySolver = new _componentsPhysicsCentralGravitySolver2['default'](this.body, this.physicsBody, options); } this.modelOptions = options; @@ -22314,738 +21711,1341 @@ return /******/ (function(modules) { // webpackBootstrap /* 57 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + // utility functions - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + 'use strict'; - var _Cluster = __webpack_require__(85); + var moment = __webpack_require__(40); + var uuid = __webpack_require__(42); - var _Cluster2 = _interopRequireDefault(_Cluster); + /** + * Test whether given object is a number + * @param {*} object + * @return {Boolean} isNumber + */ + exports.isNumber = function (object) { + return object instanceof Number || typeof object == 'number'; + }; - var util = __webpack_require__(1); + exports.recursiveDOMDelete = function (DOMobject) { + while (DOMobject.hasChildNodes() == true) { + exports.recursiveDOMDelete(DOMobject.firstChild); + DOMobject.removeChild(DOMobject.firstChild); + } + }; - var ClusterEngine = (function () { - function ClusterEngine(body) { - var _this = this; + /** + * 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); + } + }; - _classCallCheck(this, ClusterEngine); + /** + * Test whether given object is a string + * @param {*} object + * @return {Boolean} isString + */ + exports.isString = function (object) { + return object instanceof String || typeof object == 'string'; + }; - this.body = body; - this.clusteredNodes = {}; + /** + * Test whether given object is a Date, or a String containing a Date + * @param {Date | String} object + * @return {Boolean} isDate + */ + exports.isDate = function (object) { + if (object instanceof Date) { + return true; + } else if (exports.isString(object)) { + // test whether this string contains a date + var match = ASPDateRegex.exec(object); + if (match) { + return true; + } else if (!isNaN(Date.parse(object))) { + return true; + } + } - this.options = {}; - this.defaultOptions = {}; - util.extend(this.options, this.defaultOptions); + return false; + }; - this.body.emitter.on('_resetData', function () { - _this.clusteredNodes = {}; - }); - } + /** + * Create a semi UUID + * source: http://stackoverflow.com/a/105074/1262753 + * @return {String} uuid + */ + exports.randomUUID = function () { + return uuid.v4(); + }; - _createClass(ClusterEngine, [{ - key: 'setOptions', - value: function setOptions(options) { - if (options !== undefined) {} + /** + * assign all keys of an object that are not nested objects to a certain value (used for color objects). + * @param obj + * @param value + */ + exports.assignAllKeys = function (obj, value) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + if (typeof obj[prop] !== 'object') { + obj[prop] = value; + } } - }, { - key: 'clusterByHubsize', + } + }; - /** - * - * @param hubsize - * @param options - */ - value: function clusterByHubsize(hubsize, options) { - if (hubsize === undefined) { - hubsize = this._getHubSize(); - } else if (tyepof(hubsize) === 'object') { - options = this._checkOptions(hubsize); - hubsize = this._getHubSize(); - } + /** + * Fill an object with a possibly partially defined other object. Only copies values if the a object has an object requiring values. + * That means an object is not created on a property if only the b object has it. + * @param obj + * @param value + */ + exports.fillIfDefined = function (a, b) { + var allowDeletion = arguments[2] === undefined ? false : arguments[2]; - var nodesToCluster = []; - for (var i = 0; i < this.body.nodeIndices.length; i++) { - var node = this.body.nodes[this.body.nodeIndices[i]]; - if (node.edges.length >= hubsize) { - nodesToCluster.push(node.id); + for (var prop in a) { + if (b[prop] !== undefined) { + if (typeof b[prop] !== 'object') { + if ((b[prop] === undefined || b[prop] === null) && a[prop] !== undefined && allowDeletion === true) { + delete a[prop]; + } else { + a[prop] = b[prop]; + } + } else { + if (typeof a[prop] === 'object') { + exports.fillIfDefined(a[prop], b[prop], allowDeletion); } } - - for (var i = 0; i < nodesToCluster.length; i++) { - this.clusterByConnection(nodesToCluster[i], options, false); - } - this.body.emitter.emit('_dataChanged'); } - }, { - key: 'cluster', + } + }; - /** - * loop over all nodes, check if they adhere to the condition and cluster if needed. - * @param options - * @param refreshData - */ - value: function cluster() { - var options = arguments[0] === undefined ? {} : arguments[0]; - var refreshData = arguments[1] === undefined ? true : arguments[1]; + /** + * Extend object a with the properties of object b or a series of objects + * Only properties with defined values are copied + * @param {Object} a + * @param {... Object} b + * @return {Object} a + */ + exports.protoExtend = function (a, b) { + for (var i = 1; i < arguments.length; i++) { + var other = arguments[i]; + for (var prop in other) { + a[prop] = other[prop]; + } + } + return a; + }; - if (options.joinCondition === undefined) { - throw new Error('Cannot call clusterByNodeData without a joinCondition function in the options.'); + /** + * Extend object a with the properties of object b or a series of objects + * Only properties with defined values are copied + * @param {Object} a + * @param {... Object} b + * @return {Object} a + */ + exports.extend = function (a, b) { + for (var i = 1; i < arguments.length; i++) { + var other = arguments[i]; + for (var prop in other) { + if (other.hasOwnProperty(prop)) { + a[prop] = other[prop]; } + } + } + return a; + }; - // check if the options object is fine, append if needed - options = this._checkOptions(options); - - var childNodesObj = {}; - var childEdgesObj = {}; + /** + * Extend object a with selected properties of object b or a series of objects + * Only properties with defined values are copied + * @param {Array.} props + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + exports.selectiveExtend = function (props, a, b) { + if (!Array.isArray(props)) { + throw new Error('Array with property names expected as first argument'); + } - // collect the nodes that will be in the cluster - for (var i = 0; i < this.body.nodeIndices.length; i++) { - var nodeId = this.body.nodeIndices[i]; - var node = this.body.nodes[nodeId]; - var clonedOptions = this._cloneOptions(node); - if (options.joinCondition(clonedOptions) === true) { - childNodesObj[nodeId] = this.body.nodes[nodeId]; + for (var i = 2; i < arguments.length; i++) { + var other = arguments[i]; - // collect the nodes that will be in the cluster - for (var _i = 0; _i < node.edges.length; _i++) { - var edge = node.edges[_i]; - childEdgesObj[edge.id] = edge; - } - } + for (var p = 0; p < props.length; p++) { + var prop = props[p]; + if (other.hasOwnProperty(prop)) { + a[prop] = other[prop]; } - - this._cluster(childNodesObj, childEdgesObj, options, refreshData); } - }, { - key: 'clusterOutliers', - - /** - * Cluster all nodes in the network that have only 1 edge - * @param options - * @param refreshData - */ - value: function clusterOutliers(options) { - var refreshData = arguments[1] === undefined ? true : arguments[1]; + } + return a; + }; - options = this._checkOptions(options); - var clusters = []; + /** + * Extend object a with selected properties of object b or a series of objects + * Only properties with defined values are copied + * @param {Array.} props + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + exports.selectiveDeepExtend = function (props, a, b) { + var allowDeletion = arguments[3] === undefined ? false : arguments[3]; - // collect the nodes that will be in the cluster - for (var i = 0; i < this.body.nodeIndices.length; i++) { - var childNodesObj = {}; - var childEdgesObj = {}; - var nodeId = this.body.nodeIndices[i]; - var visibleEdges = 0; - var edge = undefined; - for (var j = 0; j < this.body.nodes[nodeId].edges.length; j++) { - if (this.body.nodes[nodeId].edges[j].options.hidden === false) { - visibleEdges++; - edge = this.body.nodes[nodeId].edges[j]; + // TODO: add support for Arrays to deepExtend + if (Array.isArray(b)) { + throw new TypeError('Arrays are not supported by deepExtend'); + } + for (var i = 2; i < arguments.length; i++) { + var other = arguments[i]; + for (var p = 0; p < props.length; p++) { + var prop = props[p]; + if (other.hasOwnProperty(prop)) { + if (b[prop] && b[prop].constructor === Object) { + if (a[prop] === undefined) { + a[prop] = {}; } - } - - if (visibleEdges === 1) { - // this is an outlier - var childNodeId = this._getConnectedId(edge, nodeId); - if (childNodeId !== nodeId) { - if (options.joinCondition === undefined) { - if (this._checkIfUsed(clusters, nodeId, edge.id) === false && this._checkIfUsed(clusters, childNodeId, edge.id) === false) { - childEdgesObj[edge.id] = edge; - childNodesObj[nodeId] = this.body.nodes[nodeId]; - childNodesObj[childNodeId] = this.body.nodes[childNodeId]; - } + if (a[prop].constructor === Object) { + exports.deepExtend(a[prop], b[prop], false, allowDeletion); + } else { + if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { + delete a[prop]; } else { - var clonedOptions = this._cloneOptions(this.body.nodes[nodeId]); - if (options.joinCondition(clonedOptions) === true && this._checkIfUsed(clusters, nodeId, edge.id) === false) { - childEdgesObj[edge.id] = edge; - childNodesObj[nodeId] = this.body.nodes[nodeId]; - } - clonedOptions = this._cloneOptions(this.body.nodes[childNodeId]); - if (options.joinCondition(clonedOptions) === true && this._checkIfUsed(clusters, nodeId, edge.id) === false) { - childEdgesObj[edge.id] = edge; - childNodesObj[childNodeId] = this.body.nodes[childNodeId]; - } - } - - if (Object.keys(childNodesObj).length > 0 && Object.keys(childEdgesObj).length > 0) { - clusters.push({ nodes: childNodesObj, edges: childEdgesObj }); + a[prop] = b[prop]; } } + } else if (Array.isArray(b[prop])) { + throw new TypeError('Arrays are not supported by deepExtend'); + } else { + a[prop] = b[prop]; } } - - for (var i = 0; i < clusters.length; i++) { - this._cluster(clusters[i].nodes, clusters[i].edges, options, false); - } - - if (refreshData === true) { - this.body.emitter.emit('_dataChanged'); - } - } - }, { - key: '_checkIfUsed', - value: function _checkIfUsed(clusters, nodeId, edgeId) { - for (var i = 0; i < clusters.length; i++) { - var cluster = clusters[i]; - if (cluster.nodes[nodeId] !== undefined || cluster.edges[edgeId] !== undefined) { - return true; - } - } - return false; } - }, { - key: 'clusterByConnection', - - /** - * suck all connected nodes of a node into the node. - * @param nodeId - * @param options - * @param refreshData - */ - value: function clusterByConnection(nodeId, options) { - var refreshData = arguments[2] === undefined ? true : arguments[2]; - - // kill conditions - if (nodeId === undefined) { - throw new Error('No nodeId supplied to clusterByConnection!'); - } - if (this.body.nodes[nodeId] === undefined) { - throw new Error('The nodeId given to clusterByConnection does not exist!'); - } - - var node = this.body.nodes[nodeId]; - options = this._checkOptions(options, node); - if (options.clusterNodeProperties.x === undefined) { - options.clusterNodeProperties.x = node.x; - } - if (options.clusterNodeProperties.y === undefined) { - options.clusterNodeProperties.y = node.y; - } - if (options.clusterNodeProperties.fixed === undefined) { - options.clusterNodeProperties.fixed = {}; - options.clusterNodeProperties.fixed.x = node.options.fixed.x; - options.clusterNodeProperties.fixed.y = node.options.fixed.y; - } - - var childNodesObj = {}; - var childEdgesObj = {}; - var parentNodeId = node.id; - var parentClonedOptions = this._cloneOptions(node); - childNodesObj[parentNodeId] = node; + } + return a; + }; - // collect the nodes that will be in the cluster - for (var i = 0; i < node.edges.length; i++) { - var edge = node.edges[i]; - var childNodeId = this._getConnectedId(edge, parentNodeId); + /** + * Extend object a with selected properties of object b or a series of objects + * Only properties with defined values are copied + * @param {Array.} props + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + exports.selectiveNotDeepExtend = function (props, a, b) { + var allowDeletion = arguments[3] === undefined ? false : arguments[3]; - if (childNodeId !== parentNodeId) { - if (options.joinCondition === undefined) { - childEdgesObj[edge.id] = edge; - childNodesObj[childNodeId] = this.body.nodes[childNodeId]; + // TODO: add support for Arrays to deepExtend + if (Array.isArray(b)) { + throw new TypeError('Arrays are not supported by deepExtend'); + } + for (var prop in b) { + if (b.hasOwnProperty(prop)) { + if (props.indexOf(prop) == -1) { + if (b[prop] && b[prop].constructor === Object) { + if (a[prop] === undefined) { + a[prop] = {}; + } + if (a[prop].constructor === Object) { + exports.deepExtend(a[prop], b[prop]); } else { - // clone the options and insert some additional parameters that could be interesting. - var childClonedOptions = this._cloneOptions(this.body.nodes[childNodeId]); - if (options.joinCondition(parentClonedOptions, childClonedOptions) === true) { - childEdgesObj[edge.id] = edge; - childNodesObj[childNodeId] = this.body.nodes[childNodeId]; + if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { + delete a[prop]; + } else { + a[prop] = b[prop]; } } + } else if (Array.isArray(b[prop])) { + throw new TypeError('Arrays are not supported by deepExtend'); } else { - childEdgesObj[edge.id] = edge; + a[prop] = b[prop]; } } - - this._cluster(childNodesObj, childEdgesObj, options, refreshData); } - }, { - key: '_cloneOptions', + } + return a; + }; - /** - * This returns a clone of the options or options of the edge or node to be used for construction of new edges or check functions for new nodes. - * @param objId - * @param type - * @returns {{}} - * @private - */ - value: function _cloneOptions(item, type) { - var clonedOptions = {}; - if (type === undefined || type === 'node') { - util.deepExtend(clonedOptions, item.options, true); - clonedOptions.x = item.x; - clonedOptions.y = item.y; - clonedOptions.amountOfConnections = item.edges.length; + /** + * Deep extend an object a with the properties of object b + * @param {Object} a + * @param {Object} b + * @param [Boolean] protoExtend --> optional parameter. If true, the prototype values will also be extended. + * (ie. the options objects that inherit from others will also get the inherited options) + * @param [Boolean] global --> optional parameter. If true, the values of fields that are null will not deleted + * @returns {Object} + */ + exports.deepExtend = function (a, b, protoExtend, allowDeletion) { + for (var prop in b) { + if (b.hasOwnProperty(prop) || protoExtend === true) { + if (b[prop] && b[prop].constructor === Object) { + if (a[prop] === undefined) { + a[prop] = {}; + } + if (a[prop].constructor === Object) { + exports.deepExtend(a[prop], b[prop], protoExtend); + } else { + if (b[prop] === null && a[prop] !== undefined && allowDeletion === true) { + delete a[prop]; + } else { + a[prop] = b[prop]; + } + } + } else if (Array.isArray(b[prop])) { + a[prop] = []; + for (var i = 0; i < b[prop].length; i++) { + a[prop].push(b[prop][i]); + } } else { - util.deepExtend(clonedOptions, item.options, true); + a[prop] = b[prop]; } - return clonedOptions; } - }, { - key: '_createClusterEdges', + } + return a; + }; - /** - * This function creates the edges that will be attached to the cluster. - * - * @param childNodesObj - * @param childEdgesObj - * @param newEdges - * @param options - * @private - */ - value: function _createClusterEdges(childNodesObj, childEdgesObj, newEdges, clusterNodeProperties, clusterEdgeProperties) { - var edge = undefined, - childNodeId = undefined, - childNode = undefined, - toId = undefined, - fromId = undefined, - otherNodeId = undefined; + /** + * Test whether all elements in two arrays are equal. + * @param {Array} a + * @param {Array} b + * @return {boolean} Returns true if both arrays have the same length and same + * elements. + */ + exports.equalArray = function (a, b) { + if (a.length != b.length) return false; - var childKeys = Object.keys(childNodesObj); - for (var i = 0; i < childKeys.length; i++) { - childNodeId = childKeys[i]; - childNode = childNodesObj[childNodeId]; + for (var i = 0, len = a.length; i < len; i++) { + if (a[i] != b[i]) return false; + } - // construct new edges from the cluster to others - for (var j = 0; j < childNode.edges.length; j++) { - edge = childNode.edges[j]; - childEdgesObj[edge.id] = edge; + return true; + }; - // childNodeId position will be replaced by the cluster. - if (edge.toId == childNodeId) { - // this is a double equals because ints and strings can be interchanged here. - toId = clusterNodeProperties.id; - fromId = edge.fromId; - otherNodeId = fromId; - } else { - toId = edge.toId; - fromId = clusterNodeProperties.id; - otherNodeId = toId; - } + /** + * Convert an object to another type + * @param {Boolean | Number | String | Date | Moment | Null | undefined} object + * @param {String | undefined} type Name of the type. Available types: + * 'Boolean', 'Number', 'String', + * 'Date', 'Moment', ISODate', 'ASPDate'. + * @return {*} object + * @throws Error + */ + exports.convert = function (object, type) { + var match; - // if the node connected to the cluster is also in the cluster we do not need a new edge. - if (childNodesObj[otherNodeId] === undefined) { - var clonedOptions = this._cloneOptions(edge, 'edge'); - util.deepExtend(clonedOptions, clusterEdgeProperties); - clonedOptions.from = fromId; - clonedOptions.to = toId; - clonedOptions.id = 'clusterEdge:' + util.randomUUID(); - newEdges.push(this.body.functions.createEdge(clonedOptions)); - } + if (object === undefined) { + return undefined; + } + if (object === null) { + return null; + } + + if (!type) { + return object; + } + if (!(typeof type === 'string') && !(type instanceof String)) { + throw new Error('Type must be a string'); + } + + //noinspection FallthroughInSwitchStatementJS + switch (type) { + case 'boolean': + case 'Boolean': + return Boolean(object); + + case 'number': + case 'Number': + return Number(object.valueOf()); + + case 'string': + case 'String': + return String(object); + + case 'Date': + if (exports.isNumber(object)) { + return new Date(object); + } + if (object instanceof Date) { + return new Date(object.valueOf()); + } else if (moment.isMoment(object)) { + return new Date(object.valueOf()); + } + if (exports.isString(object)) { + match = ASPDateRegex.exec(object); + if (match) { + // object is an ASP date + return new Date(Number(match[1])); // parse number + } else { + return moment(object).toDate(); // parse string } + } else { + throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type Date'); } - } - }, { - key: '_checkOptions', - /** - * This function checks the options that can be supplied to the different cluster functions - * for certain fields and inserts defaults if needed - * @param options - * @returns {*} - * @private - */ - value: function _checkOptions() { - var options = arguments[0] === undefined ? {} : arguments[0]; + case 'Moment': + if (exports.isNumber(object)) { + return moment(object); + } + if (object instanceof Date) { + return moment(object.valueOf()); + } else if (moment.isMoment(object)) { + return moment(object); + } + if (exports.isString(object)) { + match = ASPDateRegex.exec(object); + if (match) { + // object is an ASP date + return moment(Number(match[1])); // parse number + } else { + return moment(object); // parse string + } + } else { + throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type Date'); + } - if (options.clusterEdgeProperties === undefined) { - options.clusterEdgeProperties = {}; + case 'ISODate': + if (exports.isNumber(object)) { + return new Date(object); + } else if (object instanceof Date) { + return object.toISOString(); + } else if (moment.isMoment(object)) { + return object.toDate().toISOString(); + } else if (exports.isString(object)) { + match = ASPDateRegex.exec(object); + if (match) { + // object is an ASP date + return new Date(Number(match[1])).toISOString(); // parse number + } else { + return new Date(object).toISOString(); // parse string + } + } else { + throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type ISODate'); } - if (options.clusterNodeProperties === undefined) { - options.clusterNodeProperties = {}; + + case 'ASPDate': + if (exports.isNumber(object)) { + return '/Date(' + object + ')/'; + } else if (object instanceof Date) { + return '/Date(' + object.valueOf() + ')/'; + } else if (exports.isString(object)) { + match = ASPDateRegex.exec(object); + var value; + if (match) { + // object is an ASP date + value = new Date(Number(match[1])).valueOf(); // parse number + } else { + value = new Date(object).valueOf(); // parse string + } + return '/Date(' + value + ')/'; + } else { + throw new Error('Cannot convert object of type ' + exports.getType(object) + ' to type ASPDate'); } - return options; + default: + throw new Error('Unknown type "' + type + '"'); + } + }; + + // parse ASP.Net Date pattern, + // for example '/Date(1198908717056)/' or '/Date(1198908717056-0700)/' + // code from http://momentjs.com/ + var ASPDateRegex = /^\/?Date\((\-?\d+)/i; + + /** + * Get the type of an object, for example exports.getType([]) returns 'Array' + * @param {*} object + * @return {String} type + */ + exports.getType = function (object) { + var type = typeof object; + + if (type == 'object') { + if (object === null) { + return 'null'; } - }, { - key: '_cluster', + if (object instanceof Boolean) { + return 'Boolean'; + } + if (object instanceof Number) { + return 'Number'; + } + if (object instanceof String) { + return 'String'; + } + if (Array.isArray(object)) { + return 'Array'; + } + if (object instanceof Date) { + return 'Date'; + } + return 'Object'; + } else if (type == 'number') { + return 'Number'; + } else if (type == 'boolean') { + return 'Boolean'; + } else if (type == 'string') { + return 'String'; + } else if (type === undefined) { + return 'undefined'; + } - /** - * - * @param {Object} childNodesObj | object with node objects, id as keys, same as childNodes except it also contains a source node - * @param {Object} childEdgesObj | object with edge objects, id as keys - * @param {Array} options | object with {clusterNodeProperties, clusterEdgeProperties, processProperties} - * @param {Boolean} refreshData | when true, do not wrap up - * @private - */ - value: function _cluster(childNodesObj, childEdgesObj, options) { - var refreshData = arguments[3] === undefined ? true : arguments[3]; + return type; + }; - // kill condition: no children so cant cluster - if (Object.keys(childNodesObj).length === 0) { - return; - } + /** + * Used to extend an array and copy it. This is used to propagate paths recursively. + * + * @param arr + * @param newValue + * @returns {Array} + */ + exports.copyAndExtendArray = function (arr, newValue) { + var newArr = []; + for (var i = 0; i < arr.length; i++) { + newArr.push(arr[i]); + } + newArr.push(newValue); + return newArr; + }; - var clusterNodeProperties = util.deepExtend({}, options.clusterNodeProperties); + /** + * Used to extend an array and copy it. This is used to propagate paths recursively. + * + * @param arr + * @param newValue + * @returns {Array} + */ + exports.copyArray = function (arr) { + var newArr = []; + for (var i = 0; i < arr.length; i++) { + newArr.push(arr[i]); + } + return newArr; + }; - // construct the clusterNodeProperties - if (options.processProperties !== undefined) { - // get the childNode options - var childNodesOptions = []; - for (var nodeId in childNodesObj) { - var clonedOptions = this._cloneOptions(childNodesObj[nodeId]); - childNodesOptions.push(clonedOptions); - } + /** + * Retrieve the absolute left value of a DOM element + * @param {Element} elem A dom element, for example a div + * @return {number} left The absolute left position of this element + * in the browser page. + */ + exports.getAbsoluteLeft = function (elem) { + return elem.getBoundingClientRect().left; + }; - // get clusterproperties based on childNodes - var childEdgesOptions = []; - for (var edgeId in childEdgesObj) { - var clonedOptions = this._cloneOptions(childEdgesObj[edgeId], 'edge'); - childEdgesOptions.push(clonedOptions); - } + /** + * Retrieve the absolute top value of a DOM element + * @param {Element} elem A dom element, for example a div + * @return {number} top The absolute top position of this element + * in the browser page. + */ + exports.getAbsoluteTop = function (elem) { + return elem.getBoundingClientRect().top; + }; - clusterNodeProperties = options.processProperties(clusterNodeProperties, childNodesOptions, childEdgesOptions); - if (!clusterNodeProperties) { - throw new Error('The processProperties function does not return properties!'); - } - } + /** + * add a className to the given elements style + * @param {Element} elem + * @param {String} className + */ + exports.addClassName = function (elem, className) { + var classes = elem.className.split(' '); + if (classes.indexOf(className) == -1) { + classes.push(className); // add the class to the array + elem.className = classes.join(' '); + } + }; - // check if we have an unique id; - if (clusterNodeProperties.id === undefined) { - clusterNodeProperties.id = 'cluster:' + util.randomUUID(); - } - var clusterId = clusterNodeProperties.id; + /** + * add a className to the given elements style + * @param {Element} elem + * @param {String} className + */ + exports.removeClassName = function (elem, className) { + var classes = elem.className.split(' '); + var index = classes.indexOf(className); + if (index != -1) { + classes.splice(index, 1); // remove the class from the array + elem.className = classes.join(' '); + } + }; - if (clusterNodeProperties.label === undefined) { - clusterNodeProperties.label = 'cluster'; + /** + * For each method for both arrays and objects. + * In case of an array, the built-in Array.forEach() is applied. + * In case of an Object, the method loops over all properties of the object. + * @param {Object | Array} object An Object or Array + * @param {function} callback Callback method, called for each item in + * the object or array with three parameters: + * callback(value, index, object) + */ + exports.forEach = function (object, callback) { + var i, len; + if (Array.isArray(object)) { + // array + for (i = 0, len = object.length; i < len; i++) { + callback(object[i], i, object); + } + } else { + // object + for (i in object) { + if (object.hasOwnProperty(i)) { + callback(object[i], i, object); } + } + } + }; - // give the clusterNode a postion if it does not have one. - var pos = undefined; - if (clusterNodeProperties.x === undefined) { - pos = this._getClusterPosition(childNodesObj); - clusterNodeProperties.x = pos.x; - } - if (clusterNodeProperties.y === undefined) { - if (pos === undefined) { - pos = this._getClusterPosition(childNodesObj); - } - clusterNodeProperties.y = pos.y; - } + /** + * Convert an object into an array: all objects properties are put into the + * array. The resulting array is unordered. + * @param {Object} object + * @param {Array} array + */ + exports.toArray = function (object) { + var array = []; - // force the ID to remain the same - clusterNodeProperties.id = clusterId; + for (var prop in object) { + if (object.hasOwnProperty(prop)) array.push(object[prop]); + } - // create the clusterNode - var clusterNode = this.body.functions.createNode(clusterNodeProperties, _Cluster2['default']); - clusterNode.isCluster = true; - clusterNode.containedNodes = childNodesObj; - clusterNode.containedEdges = childEdgesObj; - // cache a copy from the cluster edge properties if we have to reconnect others later on - clusterNode.clusterEdgeProperties = options.clusterEdgeProperties; + return array; + }; - // finally put the cluster node into global - this.body.nodes[clusterNodeProperties.id] = clusterNode; + /** + * Update a property in an object + * @param {Object} object + * @param {String} key + * @param {*} value + * @return {Boolean} changed + */ + exports.updateProperty = function (object, key, value) { + if (object[key] !== value) { + object[key] = value; + return true; + } else { + return false; + } + }; - // create the new edges that will connect to the cluster - var newEdges = []; - this._createClusterEdges(childNodesObj, childEdgesObj, newEdges, clusterNodeProperties, options.clusterEdgeProperties); + /** + * Add and event listener. Works for all browsers + * @param {Element} element An html element + * @param {string} action The action, for example "click", + * without the prefix "on" + * @param {function} listener The callback function to be executed + * @param {boolean} [useCapture] + */ + exports.addEventListener = function (element, action, listener, useCapture) { + if (element.addEventListener) { + if (useCapture === undefined) useCapture = false; - // disable the childEdges - for (var edgeId in childEdgesObj) { - if (childEdgesObj.hasOwnProperty(edgeId)) { - if (this.body.edges[edgeId] !== undefined) { - var edge = this.body.edges[edgeId]; - edge.togglePhysics(false); - edge.options.hidden = true; - } - } - } + if (action === 'mousewheel' && navigator.userAgent.indexOf('Firefox') >= 0) { + action = 'DOMMouseScroll'; // For Firefox + } - // disable the childNodes - for (var nodeId in childNodesObj) { - if (childNodesObj.hasOwnProperty(nodeId)) { - this.clusteredNodes[nodeId] = { clusterId: clusterNodeProperties.id, node: this.body.nodes[nodeId] }; - this.body.nodes[nodeId].togglePhysics(false); - this.body.nodes[nodeId].options.hidden = true; - } - } + element.addEventListener(action, listener, useCapture); + } else { + element.attachEvent('on' + action, listener); // IE browsers + } + }; - // push new edges to global - for (var i = 0; i < newEdges.length; i++) { - this.body.edges[newEdges[i].id] = newEdges[i]; - this.body.edges[newEdges[i].id].connect(); - } + /** + * Remove an event listener from an element + * @param {Element} element An html dom element + * @param {string} action The name of the event, for example "mousedown" + * @param {function} listener The listener function + * @param {boolean} [useCapture] + */ + exports.removeEventListener = function (element, action, listener, useCapture) { + if (element.removeEventListener) { + // non-IE browsers + if (useCapture === undefined) useCapture = false; - // set ID to undefined so no duplicates arise - clusterNodeProperties.id = undefined; + if (action === 'mousewheel' && navigator.userAgent.indexOf('Firefox') >= 0) { + action = 'DOMMouseScroll'; // For Firefox + } - // wrap up - if (refreshData === true) { - this.body.emitter.emit('_dataChanged'); - } + element.removeEventListener(action, listener, useCapture); + } else { + // IE browsers + element.detachEvent('on' + action, listener); + } + }; + + /** + * Cancels the event if it is cancelable, without stopping further propagation of the event. + */ + exports.preventDefault = function (event) { + if (!event) event = window.event; + + if (event.preventDefault) { + event.preventDefault(); // non-IE browsers + } else { + event.returnValue = false; // IE browsers + } + }; + + /** + * Get HTML element which is the target of the event + * @param {Event} event + * @return {Element} target element + */ + exports.getTarget = function (event) { + // code from http://www.quirksmode.org/js/events_properties.html + if (!event) { + event = window.event; + } + + var target; + + if (event.target) { + target = event.target; + } else if (event.srcElement) { + target = event.srcElement; + } + + if (target.nodeType != undefined && target.nodeType == 3) { + // defeat Safari bug + target = target.parentNode; + } + + return target; + }; + + /** + * Check if given element contains given parent somewhere in the DOM tree + * @param {Element} element + * @param {Element} parent + */ + exports.hasParent = function (element, parent) { + var e = element; + + while (e) { + if (e === parent) { + return true; } - }, { - key: 'isCluster', + e = e.parentNode; + } - /** - * Check if a node is a cluster. - * @param nodeId - * @returns {*} - */ - value: function isCluster(nodeId) { - if (this.body.nodes[nodeId] !== undefined) { - return this.body.nodes[nodeId].isCluster === true; - } else { - console.log('Node does not exist.'); - return false; - } + return false; + }; + + exports.option = {}; + + /** + * Convert a value into a boolean + * @param {Boolean | function | undefined} value + * @param {Boolean} [defaultValue] + * @returns {Boolean} bool + */ + exports.option.asBoolean = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return value != false; + } + + return defaultValue || null; + }; + + /** + * Convert a value into a number + * @param {Boolean | function | undefined} value + * @param {Number} [defaultValue] + * @returns {Number} number + */ + exports.option.asNumber = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return Number(value) || defaultValue || null; + } + + return defaultValue || null; + }; + + /** + * Convert a value into a string + * @param {String | function | undefined} value + * @param {String} [defaultValue] + * @returns {String} str + */ + exports.option.asString = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return String(value); + } + + return defaultValue || null; + }; + + /** + * Convert a size or location into a string with pixels or a percentage + * @param {String | Number | function | undefined} value + * @param {String} [defaultValue] + * @returns {String} size + */ + exports.option.asSize = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (exports.isString(value)) { + return value; + } else if (exports.isNumber(value)) { + return value + 'px'; + } else { + return defaultValue || null; + } + }; + + /** + * Convert a value into a DOM element + * @param {HTMLElement | function | undefined} value + * @param {HTMLElement} [defaultValue] + * @returns {HTMLElement | null} dom + */ + exports.option.asElement = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + return value || defaultValue || null; + }; + + /** + * http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb + * + * @param {String} hex + * @returns {{r: *, g: *, b: *}} | 255 range + */ + exports.hexToRGB = function (hex) { + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function (m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : 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('rgba') != -1) { + return color; + } else 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 + ')'; } - }, { - key: '_getClusterPosition', + } + }; - /** - * get the position of the cluster node based on what's inside - * @param {object} childNodesObj | object with node objects, id as keys - * @returns {{x: number, y: number}} - * @private - */ - value: function _getClusterPosition(childNodesObj) { - var childKeys = Object.keys(childNodesObj); - var minX = childNodesObj[childKeys[0]].x; - var maxX = childNodesObj[childKeys[0]].x; - var minY = childNodesObj[childKeys[0]].y; - var maxY = childNodesObj[childKeys[0]].y; - var node = undefined; - for (var i = 1; i < childKeys.length; i++) { - node = childNodesObj[childKeys[i]]; - minX = node.x < minX ? node.x : minX; - maxX = node.x > maxX ? node.x : maxX; - minY = node.y < minY ? node.y : minY; - maxY = node.y > maxY ? node.y : maxY; - } + /** + * + * @param red 0 -- 255 + * @param green 0 -- 255 + * @param blue 0 -- 255 + * @returns {string} + * @constructor + */ + exports.RGBToHex = function (red, green, blue) { + return '#' + ((1 << 24) + (red << 16) + (green << 8) + blue).toString(16).slice(1); + }; - return { x: 0.5 * (minX + maxX), y: 0.5 * (minY + maxY) }; + /** + * Parse a color property into an object with border, background, and + * highlight colors + * @param {Object | String} color + * @return {Object} colorObject + */ + exports.parseColor = function (color) { + var c; + if (exports.isString(color) === true) { + if (exports.isValidRGB(color) === true) { + var rgb = color.substr(4).substr(0, color.length - 5).split(',').map(function (value) { + return parseInt(value); + }); + color = exports.RGBToHex(rgb[0], rgb[1], rgb[2]); } - }, { - key: 'openCluster', + if (exports.isValidHex(color) === true) { + var hsv = exports.hexToHSV(color); + var lighterColorHSV = { h: hsv.h, s: hsv.s * 0.8, v: Math.min(1, hsv.v * 1.02) }; + var darkerColorHSV = { h: hsv.h, s: Math.min(1, hsv.s * 1.25), v: hsv.v * 0.8 }; + var darkerColorHex = exports.HSVToHex(darkerColorHSV.h, darkerColorHSV.s, darkerColorHSV.v); + var lighterColorHex = exports.HSVToHex(lighterColorHSV.h, lighterColorHSV.s, lighterColorHSV.v); + c = { + background: color, + border: darkerColorHex, + highlight: { + background: lighterColorHex, + border: darkerColorHex + }, + hover: { + background: lighterColorHex, + border: darkerColorHex + } + }; + } else { + c = { + background: color, + border: color, + highlight: { + background: color, + border: color + }, + hover: { + background: color, + border: color + } + }; + } + } else { + c = {}; + c.background = color.background || undefined; + c.border = color.border || undefined; - /** - * Open a cluster by calling this function. - * @param {String} clusterNodeId | the ID of the cluster node - * @param {Boolean} refreshData | wrap up afterwards if not true - */ - value: function openCluster(clusterNodeId) { - var refreshData = arguments[1] === undefined ? true : arguments[1]; + if (exports.isString(color.highlight)) { + c.highlight = { + border: color.highlight, + background: color.highlight + }; + } else { + c.highlight = {}; + c.highlight.background = color.highlight && color.highlight.background || undefined; + c.highlight.border = color.highlight && color.highlight.border || undefined; + } - // kill conditions - if (clusterNodeId === undefined) { - throw new Error('No clusterNodeId supplied to openCluster.'); - } - if (this.body.nodes[clusterNodeId] === undefined) { - throw new Error('The clusterNodeId supplied to openCluster does not exist.'); - } - if (this.body.nodes[clusterNodeId].containedNodes === undefined) { - console.log('The node:' + clusterNodeId + ' is not a cluster.'); - return; + if (exports.isString(color.hover)) { + c.hover = { + border: color.hover, + background: color.hover + }; + } else { + c.hover = {}; + c.hover.background = color.hover && color.hover.background || undefined; + c.hover.border = color.hover && color.hover.border || undefined; + } + } + + return c; + }; + + /** + * http://www.javascripter.net/faq/rgb2hsv.htm + * + * @param red + * @param green + * @param blue + * @returns {*} + * @constructor + */ + exports.RGBToHSV = function (red, green, blue) { + red = red / 255;green = green / 255;blue = blue / 255; + var minRGB = Math.min(red, Math.min(green, blue)); + var maxRGB = Math.max(red, Math.max(green, blue)); + + // Black-gray-white + if (minRGB == maxRGB) { + return { h: 0, s: 0, v: minRGB }; + } + + // Colors other than black-gray-white: + var d = red == minRGB ? green - blue : blue == minRGB ? red - green : blue - red; + var h = red == minRGB ? 3 : blue == minRGB ? 1 : 5; + var hue = 60 * (h - d / (maxRGB - minRGB)) / 360; + var saturation = (maxRGB - minRGB) / maxRGB; + var value = maxRGB; + return { h: hue, s: saturation, v: value }; + }; + + var cssUtil = { + // split a string with css styles into an object with key/values + split: function split(cssText) { + var styles = {}; + + cssText.split(';').forEach(function (style) { + if (style.trim() != '') { + var parts = style.split(':'); + var key = parts[0].trim(); + var value = parts[1].trim(); + styles[key] = value; } - var clusterNode = this.body.nodes[clusterNodeId]; - var containedNodes = clusterNode.containedNodes; - var containedEdges = clusterNode.containedEdges; + }); - // release nodes - for (var nodeId in containedNodes) { - if (containedNodes.hasOwnProperty(nodeId)) { - var containedNode = this.body.nodes[nodeId]; - containedNode = containedNodes[nodeId]; - // inherit position - containedNode.x = clusterNode.x; - containedNode.y = clusterNode.y; + return styles; + }, - // inherit speed - containedNode.vx = clusterNode.vx; - containedNode.vy = clusterNode.vy; + // build a css text string from an object with key/values + join: function join(styles) { + return Object.keys(styles).map(function (key) { + return key + ': ' + styles[key]; + }).join('; '); + } + }; + + /** + * Append a string with css styles to an element + * @param {Element} element + * @param {String} cssText + */ + exports.addCssText = function (element, cssText) { + var currentStyles = cssUtil.split(element.style.cssText); + var newStyles = cssUtil.split(cssText); + var styles = exports.extend(currentStyles, newStyles); + + element.style.cssText = cssUtil.join(styles); + }; + + /** + * Remove a string with css styles from an element + * @param {Element} element + * @param {String} cssText + */ + exports.removeCssText = function (element, cssText) { + var styles = cssUtil.split(element.style.cssText); + var removeStyles = cssUtil.split(cssText); + + for (var key in removeStyles) { + if (removeStyles.hasOwnProperty(key)) { + delete styles[key]; + } + } + + element.style.cssText = cssUtil.join(styles); + }; + + /** + * https://gist.github.com/mjijackson/5311256 + * @param h + * @param s + * @param v + * @returns {{r: number, g: number, b: number}} + * @constructor + */ + exports.HSVToRGB = function (h, s, v) { + var r, g, b; - containedNode.options.hidden = false; - containedNode.togglePhysics(true); + var i = Math.floor(h * 6); + var f = h * 6 - i; + var p = v * (1 - s); + var q = v * (1 - f * s); + var t = v * (1 - (1 - f) * s); - delete this.clusteredNodes[nodeId]; - } - } + switch (i % 6) { + case 0: + r = v, g = t, b = p;break; + case 1: + r = q, g = v, b = p;break; + case 2: + r = p, g = v, b = t;break; + case 3: + r = p, g = q, b = v;break; + case 4: + r = t, g = p, b = v;break; + case 5: + r = v, g = p, b = q;break; + } - // release edges - for (var edgeId in containedEdges) { - if (containedEdges.hasOwnProperty(edgeId)) { - var edge = containedEdges[edgeId]; - // if this edge was a temporary edge and it's connected nodes do not exist anymore, we remove it from the data - if (this.body.nodes[edge.fromId] === undefined || this.body.nodes[edge.toId] === undefined) { - edge.edgeType.cleanup(); - // this removes the edge from node.edges, which is why edgeIds is formed - edge.disconnect(); - delete this.body.edges[edgeId]; - } else { + return { r: Math.floor(r * 255), g: Math.floor(g * 255), b: Math.floor(b * 255) }; + }; - // one of the nodes connected to this edge is in a cluster. We give the edge to that cluster so it will be released when that cluster is opened. - if (this.clusteredNodes[edge.fromId] !== undefined || this.clusteredNodes[edge.toId] !== undefined) { - var fromId = undefined, - toId = undefined; - var clusteredNode = this.clusteredNodes[edge.fromId] || this.clusteredNodes[edge.toId]; - var clusterId = clusteredNode.clusterId; - var _clusterNode = this.body.nodes[clusterId]; - _clusterNode.containedEdges[edgeId] = edge; + exports.HSVToHex = function (h, s, v) { + var rgb = exports.HSVToRGB(h, s, v); + return exports.RGBToHex(rgb.r, rgb.g, rgb.b); + }; - // if both from and to nodes are visible, we create a new temporary edge - if (edge.from.options.hidden !== true && edge.to.options.hidden !== true) { - if (this.clusteredNodes[edge.fromId] !== undefined) { - fromId = clusterId; - toId = edge.toId; - } else { - fromId = edge.fromId; - toId = clusterId; - } + exports.hexToHSV = function (hex) { + var rgb = exports.hexToRGB(hex); + return exports.RGBToHSV(rgb.r, rgb.g, rgb.b); + }; - var clonedOptions = this._cloneOptions(edge, 'edge'); - var id = 'clusterEdge:' + util.randomUUID(); - util.deepExtend(clonedOptions, _clusterNode.clusterEdgeProperties); - util.deepExtend(clonedOptions, { from: fromId, to: toId, hidden: false, physics: true, id: id }); - var newEdge = this.body.functions.createEdge(clonedOptions); + exports.isValidHex = function (hex) { + var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex); + return isOk; + }; - this.body.edges[id] = newEdge; - this.body.edges[id].connect(); - } - } else { - edge.options.hidden = false; - edge.togglePhysics(true); - } - } - } - } + exports.isValidRGB = function (rgb) { + rgb = rgb.replace(' ', ''); + var isOk = /rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(rgb); + return isOk; + }; + exports.isValidRGBA = function (rgba) { + rgba = rgba.replace(' ', ''); + var isOk = /rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(rgba); + return isOk; + }; - // remove all temporary edges - for (var i = 0; i < clusterNode.edges.length; i++) { - var edgeId = clusterNode.edges[i].id; - this.body.edges[edgeId].edgeType.cleanup(); - // this removes the edge from node.edges, which is why edgeIds is formed - this.body.edges[edgeId].disconnect(); - delete this.body.edges[edgeId]; + /** + * This recursively redirects the prototype of JSON objects to the referenceObject + * This is used for default options. + * + * @param referenceObject + * @returns {*} + */ + exports.selectiveBridgeObject = function (fields, referenceObject) { + if (typeof referenceObject == 'object') { + var objectTo = Object.create(referenceObject); + for (var i = 0; i < fields.length; i++) { + if (referenceObject.hasOwnProperty(fields[i])) { + if (typeof referenceObject[fields[i]] == 'object') { + objectTo[fields[i]] = exports.bridgeObject(referenceObject[fields[i]]); + } } + } + return objectTo; + } else { + return null; + } + }; - // remove clusterNode - delete this.body.nodes[clusterNodeId]; - - if (refreshData === true) { - this.body.emitter.emit('_dataChanged'); + /** + * This recursively redirects the prototype of JSON objects to the referenceObject + * This is used for default options. + * + * @param referenceObject + * @returns {*} + */ + exports.bridgeObject = function (referenceObject) { + if (typeof referenceObject == 'object') { + var objectTo = Object.create(referenceObject); + for (var i in referenceObject) { + if (referenceObject.hasOwnProperty(i)) { + if (typeof referenceObject[i] == 'object') { + objectTo[i] = exports.bridgeObject(referenceObject[i]); + } } } - }, { - key: '_connectEdge', + return objectTo; + } else { + return null; + } + }; - /** - * Connect an edge that was previously contained from cluster A to cluster B if the node that it was originally connected to - * is currently residing in cluster B - * @param edge - * @param nodeId - * @param from - * @private - */ - value: function _connectEdge(edge, nodeId, from) { - var clusterStack = this.findNode(nodeId); - if (from === true) { - edge.from = clusterStack[clusterStack.length - 1]; - edge.fromId = clusterStack[clusterStack.length - 1].id; - clusterStack.pop(); - edge.fromArray = clusterStack; + /** + * this is used to set the options of subobjects in the options object. A requirement of these subobjects + * is that they have an 'enabled' element which is optional for the user but mandatory for the program. + * + * @param [object] mergeTarget | this is either this.options or the options used for the groups. + * @param [object] options | options + * @param [String] option | this is the option key in the options argument + * @private + */ + exports.mergeOptions = function (mergeTarget, options, option) { + var allowDeletion = arguments[3] === undefined ? false : arguments[3]; + + if (options[option] === null) { + mergeTarget[option] = undefined; + delete mergeTarget[option]; + } else { + if (options[option] !== undefined) { + if (typeof options[option] === 'boolean') { + mergeTarget[option].enabled = options[option]; } else { - edge.to = clusterStack[clusterStack.length - 1]; - edge.toId = clusterStack[clusterStack.length - 1].id; - clusterStack.pop(); - edge.toArray = clusterStack; + if (options[option].enabled === undefined) { + mergeTarget[option].enabled = true; + } + for (var prop in options[option]) { + if (options[option].hasOwnProperty(prop)) { + mergeTarget[option][prop] = options[option][prop]; + } + } } - edge.connect(); } - }, { - key: 'findNode', + } + }; - /** - * Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node - * @param nodeId - * @returns {Array} - * @private - */ - value: function findNode(nodeId) { - var stack = []; - var max = 100; - var counter = 0; + /** + * This function does a binary search for a visible item in a sorted list. If we find a visible item, the code that uses + * this function will then iterate in both directions over this sorted list to find all visible items. + * + * @param {Item[]} orderedItems | Items ordered by start + * @param {function} searchFunction | -1 is lower, 0 is found, 1 is higher + * @param {String} field + * @param {String} field2 + * @returns {number} + * @private + */ + exports.binarySearchCustom = function (orderedItems, searchFunction, field, field2) { + var maxIterations = 10000; + var iteration = 0; + var low = 0; + var high = orderedItems.length - 1; - while (this.clusteredNodes[nodeId] !== undefined && counter < max) { - stack.push(this.clusteredNodes[nodeId].node); - nodeId = this.clusteredNodes[nodeId].clusterId; - counter++; - } - stack.push(this.body.nodes[nodeId]); - return stack; - } - }, { - key: '_getConnectedId', + while (low <= high && iteration < maxIterations) { + var middle = Math.floor((low + high) / 2); - /** - * Get the Id the node is connected to - * @param edge - * @param nodeId - * @returns {*} - * @private - */ - value: function _getConnectedId(edge, nodeId) { - if (edge.toId != nodeId) { - return edge.toId; - } else if (edge.fromId != nodeId) { - return edge.fromId; - } else { - return edge.fromId; - } + var item = orderedItems[middle]; + var value = field2 === undefined ? item[field] : item[field][field2]; + + var searchResult = searchFunction(value); + if (searchResult == 0) { + // jihaa, found a visible item! + return middle; + } else if (searchResult == -1) { + // it is too small --> increase low + low = middle + 1; + } else { + // it is too big --> decrease high + high = middle - 1; } - }, { - key: '_getHubSize', - /** - * We determine how many connections denote an important hub. - * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) - * - * @private - */ - value: function _getHubSize() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; + iteration++; + } - for (var i = 0; i < this.body.nodeIndices.length; i++) { - var node = this.body.nodes[this.body.nodeIndices[i]]; - if (node.edges.length > largestHub) { - largestHub = node.edges.length; - } - average += node.edges.length; - averageSquared += Math.pow(node.edges.length, 2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; + return -1; + }; - var letiance = averageSquared - Math.pow(average, 2); - var standardDeviation = Math.sqrt(letiance); + /** + * This function does a binary search for a specific value in a sorted array. If it does not exist but is in between of + * two values, we return either the one before or the one after, depending on user input + * If it is found, we return the index, else -1. + * + * @param {Array} orderedItems + * @param {{start: number, end: number}} target + * @param {String} field + * @param {String} sidePreference 'before' or 'after' + * @returns {number} + * @private + */ + exports.binarySearchValue = function (orderedItems, target, field, sidePreference) { + var maxIterations = 10000; + var iteration = 0; + var low = 0; + var high = orderedItems.length - 1; + var prevValue, value, nextValue, middle; - var hubThreshold = Math.floor(average + 2 * standardDeviation); + while (low <= high && iteration < maxIterations) { + // get a new guess + middle = Math.floor(0.5 * (high + low)); + prevValue = orderedItems[Math.max(0, middle - 1)][field]; + value = orderedItems[middle][field]; + nextValue = orderedItems[Math.min(orderedItems.length - 1, middle + 1)][field]; - // always have at least one to cluster - if (hubThreshold > largestHub) { - hubThreshold = largestHub; + if (value == target) { + // we found the target + return middle; + } else if (prevValue < target && value > target) { + // target is in between of the previous and the current + return sidePreference == 'before' ? Math.max(0, middle - 1) : middle; + } else if (value < target && nextValue > target) { + // target is in between of the current and the next + return sidePreference == 'before' ? middle : Math.min(orderedItems.length - 1, middle + 1); + } else { + // didnt find the target, we need to change our boundaries. + if (value < target) { + // it is too small --> increase low + low = middle + 1; + } else { + // it is too big --> decrease high + high = middle - 1; } - - return hubThreshold; } - }]); + iteration++; + } - return ClusterEngine; - })(); + // didnt find anything. Return -1. + return -1; + }; - exports['default'] = ClusterEngine; - module.exports = exports['default']; + /* + * Easing Functions - inspired from http://gizma.com/easing/ + * only considering the t value for the range [0, 1] => [0, 1] + * https://gist.github.com/gre/1650294 + */ + exports.easingFunctions = { + // no easing, no acceleration + linear: function linear(t) { + return t; + }, + // accelerating from zero velocity + easeInQuad: function easeInQuad(t) { + return t * t; + }, + // decelerating to zero velocity + easeOutQuad: function easeOutQuad(t) { + return t * (2 - t); + }, + // acceleration until halfway, then deceleration + easeInOutQuad: function easeInOutQuad(t) { + return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t; + }, + // accelerating from zero velocity + easeInCubic: function easeInCubic(t) { + return t * t * t; + }, + // decelerating to zero velocity + easeOutCubic: function easeOutCubic(t) { + return --t * t * t + 1; + }, + // acceleration until halfway, then deceleration + easeInOutCubic: function easeInOutCubic(t) { + return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; + }, + // accelerating from zero velocity + easeInQuart: function easeInQuart(t) { + return t * t * t * t; + }, + // decelerating to zero velocity + easeOutQuart: function easeOutQuart(t) { + return 1 - --t * t * t * t; + }, + // acceleration until halfway, then deceleration + easeInOutQuart: function easeInOutQuart(t) { + return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t; + }, + // accelerating from zero velocity + easeInQuint: function easeInQuint(t) { + return t * t * t * t * t; + }, + // decelerating to zero velocity + easeOutQuint: function easeOutQuint(t) { + return 1 + --t * t * t * t * t; + }, + // acceleration until halfway, then deceleration + easeInOutQuint: function easeInOutQuint(t) { + return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t; + } + }; /***/ }, /* 58 */ @@ -23065,7 +23065,7 @@ return /******/ (function(modules) { // webpackBootstrap window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var CanvasRenderer = (function () { function CanvasRenderer(body, canvas) { @@ -23444,7 +23444,7 @@ return /******/ (function(modules) { // webpackBootstrap var Hammer = __webpack_require__(41); var hammerUtil = __webpack_require__(48); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * Create the main frame for the Network. @@ -23809,7 +23809,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var View = (function () { function View(body, canvas) { @@ -24213,15 +24213,15 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _NavigationHandler = __webpack_require__(86); + var _componentsNavigationHandler = __webpack_require__(86); - var _NavigationHandler2 = _interopRequireDefault(_NavigationHandler); + var _componentsNavigationHandler2 = _interopRequireDefault(_componentsNavigationHandler); - var _Popup = __webpack_require__(87); + var _componentsPopup = __webpack_require__(87); - var _Popup2 = _interopRequireDefault(_Popup); + var _componentsPopup2 = _interopRequireDefault(_componentsPopup); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var InteractionHandler = (function () { function InteractionHandler(body, canvas, selectionHandler) { @@ -24230,7 +24230,7 @@ return /******/ (function(modules) { // webpackBootstrap this.body = body; this.canvas = canvas; this.selectionHandler = selectionHandler; - this.navigationHandler = new _NavigationHandler2['default'](body, canvas); + this.navigationHandler = new _componentsNavigationHandler2['default'](body, canvas); // bind the events from hammer to functions in this object this.body.eventListeners.onTap = this.onTap.bind(this); @@ -24836,7 +24836,7 @@ return /******/ (function(modules) { // webpackBootstrap // show popup message window if (this.popupObj.id !== previousPopupObjId) { if (this.popup === undefined) { - this.popup = new _Popup2['default'](this.canvas.frame); + this.popup = new _componentsPopup2['default'](this.canvas.frame); } this.popup.popupTargetType = popupType; @@ -24919,7 +24919,7 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(74); var Edge = __webpack_require__(76); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var SelectionHandler = (function () { function SelectionHandler(body, canvas) { @@ -25637,7 +25637,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var LayoutEngine = (function () { function LayoutEngine(body) { @@ -26134,7 +26134,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Hammer = __webpack_require__(41); var hammerUtil = __webpack_require__(48); @@ -27319,11 +27319,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 65 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); /** * This object contains all possible options. It will check if the types are correct, if required if the option is one * of the allowed values. @@ -27331,6 +27326,11 @@ return /******/ (function(modules) { // webpackBootstrap * __any__ means that the name of the property does not matter. * __type__ is a required field for all objects and contains the allowed types of all objects */ + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); var string = 'string'; var boolean = 'boolean'; var number = 'number'; @@ -28088,7 +28088,7 @@ return /******/ (function(modules) { // webpackBootstrap var keycharm = __webpack_require__(88); var Emitter = __webpack_require__(69); var Hammer = __webpack_require__(41); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * Turn an element into an clickToUse element. @@ -28451,7 +28451,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {//! moment.js - //! version : 2.10.2 + //! version : 2.10.3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -28474,28 +28474,12 @@ return /******/ (function(modules) { // webpackBootstrap hookCallback = callback; } - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; - } - 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; + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; } function map(arr, fn) { @@ -28532,21 +28516,45 @@ return /******/ (function(modules) { // webpackBootstrap return createLocalOrUTC(input, format, locale, strict, true).utc(); } + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + function valid__isValid(m) { if (m._isValid == null) { + var flags = getParsingFlags(m); 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; + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated; if (m._strict) { m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; } } return m._isValid; @@ -28555,10 +28563,10 @@ return /******/ (function(modules) { // webpackBootstrap function valid__createInvalid (flags) { var m = create_utc__createUTC(NaN); if (flags != null) { - extend(m._pf, flags); + extend(getParsingFlags(m), flags); } else { - m._pf.userInvalidated = true; + getParsingFlags(m).userInvalidated = true; } return m; @@ -28594,7 +28602,7 @@ return /******/ (function(modules) { // webpackBootstrap to._offset = from._offset; } if (typeof from._pf !== 'undefined') { - to._pf = from._pf; + to._pf = getParsingFlags(from); } if (typeof from._locale !== 'undefined') { to._locale = from._locale; @@ -28629,7 +28637,7 @@ return /******/ (function(modules) { // webpackBootstrap } function isMoment (obj) { - return obj instanceof Moment || (obj != null && hasOwnProp(obj, '_isAMomentObject')); + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); } function toInt(argumentForCoercion) { @@ -29067,7 +29075,7 @@ return /******/ (function(modules) { // webpackBootstrap if (month != null) { array[MONTH] = month; } else { - config._pf.invalidMonth = input; + getParsingFlags(config).invalidMonth = input; } }); @@ -29151,7 +29159,7 @@ return /******/ (function(modules) { // webpackBootstrap var overflow; var a = m._a; - if (a && m._pf.overflow === -2) { + if (a && getParsingFlags(m).overflow === -2) { overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : @@ -29161,11 +29169,11 @@ return /******/ (function(modules) { // webpackBootstrap a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { overflow = DATE; } - m._pf.overflow = overflow; + getParsingFlags(m).overflow = overflow; } return m; @@ -29178,10 +29186,12 @@ return /******/ (function(modules) { // webpackBootstrap } function deprecate(msg, fn) { - var firstTime = true; + var firstTime = true, + msgWithStack = msg + '\n' + (new Error()).stack; + return extend(function () { if (firstTime) { - warn(msg); + warn(msgWithStack); firstTime = false; } return fn.apply(this, arguments); @@ -29226,7 +29236,7 @@ return /******/ (function(modules) { // webpackBootstrap match = from_string__isoRegex.exec(string); if (match) { - config._pf.iso = true; + getParsingFlags(config).iso = true; for (i = 0, l = isoDates.length; i < l; i++) { if (isoDates[i][1].exec(string)) { // match[5] should be 'T' or undefined @@ -29506,7 +29516,7 @@ return /******/ (function(modules) { // webpackBootstrap yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + getParsingFlags(config)._overflowDayOfYear = true; } date = createUTCDate(yearToUse, 0, config._dayOfYear); @@ -29602,7 +29612,7 @@ return /******/ (function(modules) { // webpackBootstrap } config._a = []; - config._pf.empty = true; + getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, @@ -29618,7 +29628,7 @@ return /******/ (function(modules) { // webpackBootstrap if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); + getParsingFlags(config).unusedInput.push(skipped); } string = string.slice(string.indexOf(parsedInput) + parsedInput.length); totalParsedInputLength += parsedInput.length; @@ -29626,27 +29636,29 @@ return /******/ (function(modules) { // webpackBootstrap // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { - config._pf.empty = false; + getParsingFlags(config).empty = false; } else { - config._pf.unusedTokens.push(token); + getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); } else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; if (string.length > 0) { - config._pf.unusedInput.push(string); + getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; + if (getParsingFlags(config).bigHour === true && + config._a[HOUR] <= 12 && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; } // handle meridiem config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); @@ -29690,7 +29702,7 @@ return /******/ (function(modules) { // webpackBootstrap currentScore; if (config._f.length === 0) { - config._pf.invalidFormat = true; + getParsingFlags(config).invalidFormat = true; config._d = new Date(NaN); return; } @@ -29701,7 +29713,6 @@ return /******/ (function(modules) { // webpackBootstrap if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; } - tempConfig._pf = defaultParsingFlags(); tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); @@ -29710,12 +29721,12 @@ return /******/ (function(modules) { // webpackBootstrap } // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - tempConfig._pf.score = currentScore; + getParsingFlags(tempConfig).score = currentScore; if (scoreToBeat == null || currentScore < scoreToBeat) { scoreToBeat = currentScore; @@ -29758,6 +29769,8 @@ return /******/ (function(modules) { // webpackBootstrap configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); + } else if (isDate(input)) { + config._d = input; } else { configFromInput(config); } @@ -29810,7 +29823,6 @@ return /******/ (function(modules) { // webpackBootstrap c._i = input; c._f = format; c._strict = strict; - c._pf = defaultParsingFlags(); return createFromConfig(c); } @@ -30384,6 +30396,9 @@ return /******/ (function(modules) { // webpackBootstrap } function from (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); } @@ -30391,6 +30406,17 @@ return /******/ (function(modules) { // webpackBootstrap return this.from(local__createLocal(), withoutSuffix); } + function to (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + function locale (key) { var newLocaleData; @@ -30493,11 +30519,11 @@ return /******/ (function(modules) { // webpackBootstrap } function parsingFlags () { - return extend({}, this._pf); + return extend({}, getParsingFlags(this)); } function invalidAt () { - return this._pf.overflow; + return getParsingFlags(this).overflow; } addFormatToken(0, ['gg', 2], 0, function () { @@ -30648,7 +30674,7 @@ return /******/ (function(modules) { // webpackBootstrap if (weekday != null) { week.d = weekday; } else { - config._pf.invalidWeekday = input; + getParsingFlags(config).invalidWeekday = input; } }); @@ -30773,7 +30799,7 @@ return /******/ (function(modules) { // webpackBootstrap }); addParseToken(['h', 'hh'], function (input, array, config) { array[HOUR] = toInt(input); - config._pf.bigHour = true; + getParsingFlags(config).bigHour = true; }); // LOCALES @@ -30890,6 +30916,8 @@ return /******/ (function(modules) { // webpackBootstrap momentPrototype__proto.format = format; momentPrototype__proto.from = from; momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; momentPrototype__proto.get = getSet; momentPrototype__proto.invalidAt = invalidAt; momentPrototype__proto.isAfter = isAfter; @@ -31078,7 +31106,7 @@ return /******/ (function(modules) { // webpackBootstrap } // 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); + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); } var prototype__proto = Locale.prototype; @@ -31295,13 +31323,13 @@ return /******/ (function(modules) { // webpackBootstrap // 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 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 24 * 60 + milliseconds / 6e4; - case 'second' : return days * 24 * 60 * 60 + milliseconds / 1000; + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + milliseconds; + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; default: throw new Error('Unknown unit ' + units); } } @@ -31502,7 +31530,7 @@ return /******/ (function(modules) { // webpackBootstrap // Side effect imports - utils_hooks__hooks.version = '2.10.2'; + utils_hooks__hooks.version = '2.10.3'; setHookCallback(local__createLocal); @@ -34248,7 +34276,7 @@ return /******/ (function(modules) { // webpackBootstrap var Hammer = __webpack_require__(41); var hammerUtil = __webpack_require__(48); - var util = __webpack_require__(1); + var util = __webpack_require__(57); var ColorPicker = (function () { function ColorPicker() { @@ -34828,71 +34856,71 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _Label = __webpack_require__(75); + var _sharedLabel = __webpack_require__(75); - var _Label2 = _interopRequireDefault(_Label); + var _sharedLabel2 = _interopRequireDefault(_sharedLabel); - var _Box = __webpack_require__(90); + var _nodesShapesBox = __webpack_require__(90); - var _Box2 = _interopRequireDefault(_Box); + var _nodesShapesBox2 = _interopRequireDefault(_nodesShapesBox); - var _Circle = __webpack_require__(91); + var _nodesShapesCircle = __webpack_require__(91); - var _Circle2 = _interopRequireDefault(_Circle); + var _nodesShapesCircle2 = _interopRequireDefault(_nodesShapesCircle); - var _CircularImage = __webpack_require__(92); + var _nodesShapesCircularImage = __webpack_require__(92); - var _CircularImage2 = _interopRequireDefault(_CircularImage); + var _nodesShapesCircularImage2 = _interopRequireDefault(_nodesShapesCircularImage); - var _Database = __webpack_require__(93); + var _nodesShapesDatabase = __webpack_require__(93); - var _Database2 = _interopRequireDefault(_Database); + var _nodesShapesDatabase2 = _interopRequireDefault(_nodesShapesDatabase); - var _Diamond = __webpack_require__(94); + var _nodesShapesDiamond = __webpack_require__(94); - var _Diamond2 = _interopRequireDefault(_Diamond); + var _nodesShapesDiamond2 = _interopRequireDefault(_nodesShapesDiamond); - var _Dot = __webpack_require__(95); + var _nodesShapesDot = __webpack_require__(95); - var _Dot2 = _interopRequireDefault(_Dot); + var _nodesShapesDot2 = _interopRequireDefault(_nodesShapesDot); - var _Ellipse = __webpack_require__(96); + var _nodesShapesEllipse = __webpack_require__(96); - var _Ellipse2 = _interopRequireDefault(_Ellipse); + var _nodesShapesEllipse2 = _interopRequireDefault(_nodesShapesEllipse); - var _Icon = __webpack_require__(97); + var _nodesShapesIcon = __webpack_require__(97); - var _Icon2 = _interopRequireDefault(_Icon); + var _nodesShapesIcon2 = _interopRequireDefault(_nodesShapesIcon); - var _Image = __webpack_require__(98); + var _nodesShapesImage = __webpack_require__(98); - var _Image2 = _interopRequireDefault(_Image); + var _nodesShapesImage2 = _interopRequireDefault(_nodesShapesImage); - var _Square = __webpack_require__(99); + var _nodesShapesSquare = __webpack_require__(99); - var _Square2 = _interopRequireDefault(_Square); + var _nodesShapesSquare2 = _interopRequireDefault(_nodesShapesSquare); - var _Star = __webpack_require__(100); + var _nodesShapesStar = __webpack_require__(100); - var _Star2 = _interopRequireDefault(_Star); + var _nodesShapesStar2 = _interopRequireDefault(_nodesShapesStar); - var _Text = __webpack_require__(101); + var _nodesShapesText = __webpack_require__(101); - var _Text2 = _interopRequireDefault(_Text); + var _nodesShapesText2 = _interopRequireDefault(_nodesShapesText); - var _Triangle = __webpack_require__(102); + var _nodesShapesTriangle = __webpack_require__(102); - var _Triangle2 = _interopRequireDefault(_Triangle); + var _nodesShapesTriangle2 = _interopRequireDefault(_nodesShapesTriangle); - var _TriangleDown = __webpack_require__(103); + var _nodesShapesTriangleDown = __webpack_require__(103); - var _TriangleDown2 = _interopRequireDefault(_TriangleDown); + var _nodesShapesTriangleDown2 = _interopRequireDefault(_nodesShapesTriangleDown); - var _Validator = __webpack_require__(45); + var _sharedValidator = __webpack_require__(45); - var _Validator2 = _interopRequireDefault(_Validator); + var _sharedValidator2 = _interopRequireDefault(_sharedValidator); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @class Node @@ -34943,7 +34971,7 @@ return /******/ (function(modules) { // webpackBootstrap this.selected = false; this.hover = false; - this.labelModule = new _Label2['default'](this.body, this.options); + this.labelModule = new _sharedLabel2['default'](this.body, this.options); this.setOptions(options); } @@ -35060,49 +35088,49 @@ return /******/ (function(modules) { // webpackBootstrap // choose draw method depending on the shape switch (this.options.shape) { case 'box': - this.shape = new _Box2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesBox2['default'](this.options, this.body, this.labelModule); break; case 'circle': - this.shape = new _Circle2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesCircle2['default'](this.options, this.body, this.labelModule); break; case 'circularImage': - this.shape = new _CircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _nodesShapesCircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); break; case 'database': - this.shape = new _Database2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesDatabase2['default'](this.options, this.body, this.labelModule); break; case 'diamond': - this.shape = new _Diamond2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesDiamond2['default'](this.options, this.body, this.labelModule); break; case 'dot': - this.shape = new _Dot2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesDot2['default'](this.options, this.body, this.labelModule); break; case 'ellipse': - this.shape = new _Ellipse2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); break; case 'icon': - this.shape = new _Icon2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesIcon2['default'](this.options, this.body, this.labelModule); break; case 'image': - this.shape = new _Image2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _nodesShapesImage2['default'](this.options, this.body, this.labelModule, this.imageObj); break; case 'square': - this.shape = new _Square2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesSquare2['default'](this.options, this.body, this.labelModule); break; case 'star': - this.shape = new _Star2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesStar2['default'](this.options, this.body, this.labelModule); break; case 'text': - this.shape = new _Text2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesText2['default'](this.options, this.body, this.labelModule); break; case 'triangle': - this.shape = new _Triangle2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesTriangle2['default'](this.options, this.body, this.labelModule); break; case 'triangleDown': - this.shape = new _TriangleDown2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesTriangleDown2['default'](this.options, this.body, this.labelModule); break; default: - this.shape = new _Ellipse2['default'](this.options, this.body, this.labelModule); + this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); break; } this._reset(); @@ -35311,7 +35339,7 @@ return /******/ (function(modules) { // webpackBootstrap // handle the font options if (newOptions.font !== undefined) { - _Label2['default'].parseOptions(parentOptions.font, newOptions); + _sharedLabel2['default'].parseOptions(parentOptions.font, newOptions); } // handle the scaling options, specifically the label part @@ -35343,7 +35371,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Label = (function () { function Label(body, options) { @@ -35658,23 +35686,23 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _Label = __webpack_require__(75); + var _sharedLabel = __webpack_require__(75); - var _Label2 = _interopRequireDefault(_Label); + var _sharedLabel2 = _interopRequireDefault(_sharedLabel); - var _BezierEdgeDynamic = __webpack_require__(104); + var _edgesBezierEdgeDynamic = __webpack_require__(104); - var _BezierEdgeDynamic2 = _interopRequireDefault(_BezierEdgeDynamic); + var _edgesBezierEdgeDynamic2 = _interopRequireDefault(_edgesBezierEdgeDynamic); - var _BezierEdgeStatic = __webpack_require__(105); + var _edgesBezierEdgeStatic = __webpack_require__(105); - var _BezierEdgeStatic2 = _interopRequireDefault(_BezierEdgeStatic); + var _edgesBezierEdgeStatic2 = _interopRequireDefault(_edgesBezierEdgeStatic); - var _StraightEdge = __webpack_require__(106); + var _edgesStraightEdge = __webpack_require__(106); - var _StraightEdge2 = _interopRequireDefault(_StraightEdge); + var _edgesStraightEdge2 = _interopRequireDefault(_edgesStraightEdge); - var util = __webpack_require__(1); + var util = __webpack_require__(57); /** * @class Edge @@ -35721,7 +35749,7 @@ return /******/ (function(modules) { // webpackBootstrap this.connected = false; - this.labelModule = new _Label2['default'](this.body, this.options); + this.labelModule = new _sharedLabel2['default'](this.body, this.options); this.setOptions(options); } @@ -35794,13 +35822,13 @@ return /******/ (function(modules) { // webpackBootstrap var dataChanged = false; var changeInType = true; if (this.edgeType !== undefined) { - if (this.edgeType instanceof _BezierEdgeDynamic2['default'] && this.options.smooth.enabled === true && this.options.smooth.type === 'dynamic') { + if (this.edgeType instanceof _edgesBezierEdgeDynamic2['default'] && this.options.smooth.enabled === true && this.options.smooth.type === 'dynamic') { changeInType = false; } - if (this.edgeType instanceof _BezierEdgeStatic2['default'] && this.options.smooth.enabled === true && this.options.smooth.type !== 'dynamic') { + if (this.edgeType instanceof _edgesBezierEdgeStatic2['default'] && this.options.smooth.enabled === true && this.options.smooth.type !== 'dynamic') { changeInType = false; } - if (this.edgeType instanceof _StraightEdge2['default'] && this.options.smooth.enabled === false) { + if (this.edgeType instanceof _edgesStraightEdge2['default'] && this.options.smooth.enabled === false) { changeInType = false; } @@ -35813,12 +35841,12 @@ return /******/ (function(modules) { // webpackBootstrap if (this.options.smooth.enabled === true) { if (this.options.smooth.type === 'dynamic') { dataChanged = true; - this.edgeType = new _BezierEdgeDynamic2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _edgesBezierEdgeDynamic2['default'](this.options, this.body, this.labelModule); } else { - this.edgeType = new _BezierEdgeStatic2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _edgesBezierEdgeStatic2['default'](this.options, this.body, this.labelModule); } } else { - this.edgeType = new _StraightEdge2['default'](this.options, this.body, this.labelModule); + this.edgeType = new _edgesStraightEdge2['default'](this.options, this.body, this.labelModule); } } else { // if nothing changes, we just set the options. @@ -36186,7 +36214,7 @@ return /******/ (function(modules) { // webpackBootstrap // handle the font settings if (newOptions.font !== undefined) { - _Label2['default'].parseOptions(parentOptions.font, newOptions); + _sharedLabel2['default'].parseOptions(parentOptions.font, newOptions); } } }]); @@ -37187,9 +37215,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } @@ -37263,9 +37289,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } @@ -37319,9 +37343,7 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -37370,7 +37392,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var Hammer = __webpack_require__(41); var hammerUtil = __webpack_require__(48); var keycharm = __webpack_require__(88); @@ -37630,16 +37652,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 87 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - /** * Popup is a class to create a popup window with some text * @param {Element} container The container object. @@ -37649,6 +37661,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} [style] An object containing borderColor, * backgroundColor, etc. */ + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var Popup = (function () { function Popup(container) { @@ -37977,9 +37998,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -37987,11 +38006,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); - - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase = __webpack_require__(109); - 'use strict'; + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var Box = (function (_NodeBase) { function Box(options, body, labelModule) { @@ -38069,7 +38086,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Box; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = Box; module.exports = exports['default']; @@ -38086,9 +38103,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38096,11 +38111,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _CircleImageBase2 = __webpack_require__(110); - - var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); + var _utilCircleImageBase = __webpack_require__(110); - 'use strict'; + var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); var Circle = (function (_CircleImageBase) { function Circle(options, body, labelModule) { @@ -38163,7 +38176,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Circle; - })(_CircleImageBase3['default']); + })(_utilCircleImageBase2['default']); exports['default'] = Circle; module.exports = exports['default']; @@ -38180,9 +38193,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38190,11 +38201,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _CircleImageBase2 = __webpack_require__(110); - - var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); + var _utilCircleImageBase = __webpack_require__(110); - 'use strict'; + var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); var CircularImage = (function (_CircleImageBase) { function CircularImage(options, body, labelModule, imageObj) { @@ -38272,7 +38281,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CircularImage; - })(_CircleImageBase3['default']); + })(_utilCircleImageBase2['default']); exports['default'] = CircularImage; module.exports = exports['default']; @@ -38289,9 +38298,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38299,11 +38306,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); - - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase = __webpack_require__(109); - 'use strict'; + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var Database = (function (_NodeBase) { function Database(options, body, labelModule) { @@ -38381,7 +38386,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Database; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = Database; module.exports = exports['default']; @@ -38398,9 +38403,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38408,11 +38411,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var Diamond = (function (_ShapeBase) { function Diamond(options, body, labelModule) { @@ -38441,7 +38442,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Diamond; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = Diamond; module.exports = exports['default']; @@ -38458,9 +38459,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38468,11 +38467,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var Dot = (function (_ShapeBase) { function Dot(options, body, labelModule) { @@ -38501,7 +38498,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Dot; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = Dot; module.exports = exports['default']; @@ -38518,9 +38515,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38528,11 +38523,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); - - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase = __webpack_require__(109); - 'use strict'; + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var Ellipse = (function (_NodeBase) { function Ellipse(options, body, labelModule) { @@ -38612,7 +38605,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Ellipse; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = Ellipse; module.exports = exports['default']; @@ -38629,9 +38622,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38639,11 +38630,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); - - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase = __webpack_require__(109); - 'use strict'; + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var Icon = (function (_NodeBase) { function Icon(options, body, labelModule) { @@ -38732,7 +38721,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Icon; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = Icon; module.exports = exports['default']; @@ -38749,9 +38738,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38759,11 +38746,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _CircleImageBase2 = __webpack_require__(110); - - var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); + var _utilCircleImageBase = __webpack_require__(110); - 'use strict'; + var _utilCircleImageBase2 = _interopRequireDefault(_utilCircleImageBase); var Image = (function (_CircleImageBase) { function Image(options, body, labelModule, imageObj) { @@ -38823,7 +38808,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Image; - })(_CircleImageBase3['default']); + })(_utilCircleImageBase2['default']); exports['default'] = Image; module.exports = exports['default']; @@ -38840,9 +38825,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38850,11 +38833,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var Square = (function (_ShapeBase) { function Square(options, body, labelModule) { @@ -38884,7 +38865,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Square; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = Square; module.exports = exports['default']; @@ -38901,9 +38882,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38911,11 +38890,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var Star = (function (_ShapeBase) { function Star(options, body, labelModule) { @@ -38944,7 +38921,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Star; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = Star; module.exports = exports['default']; @@ -38961,9 +38938,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -38971,11 +38946,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); - - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase = __webpack_require__(109); - 'use strict'; + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var Text = (function (_NodeBase) { function Text(options, body, labelModule) { @@ -39033,7 +39006,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Text; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = Text; module.exports = exports['default']; @@ -39050,9 +39023,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39060,11 +39031,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var Triangle = (function (_ShapeBase) { function Triangle(options, body, labelModule) { @@ -39093,7 +39062,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return Triangle; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = Triangle; module.exports = exports['default']; @@ -39110,9 +39079,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39120,11 +39087,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _ShapeBase2 = __webpack_require__(111); - - var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); + var _utilShapeBase = __webpack_require__(111); - 'use strict'; + var _utilShapeBase2 = _interopRequireDefault(_utilShapeBase); var TriangleDown = (function (_ShapeBase) { function TriangleDown(options, body, labelModule) { @@ -39153,7 +39118,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return TriangleDown; - })(_ShapeBase3['default']); + })(_utilShapeBase2['default']); exports['default'] = TriangleDown; module.exports = exports['default']; @@ -39170,9 +39135,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39180,9 +39143,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _BezierEdgeBase2 = __webpack_require__(112); + var _utilBezierEdgeBase = __webpack_require__(112); - var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); + var _utilBezierEdgeBase2 = _interopRequireDefault(_utilBezierEdgeBase); var BezierEdgeDynamic = (function (_BezierEdgeBase) { function BezierEdgeDynamic(options, body, labelModule) { @@ -39311,7 +39274,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return BezierEdgeDynamic; - })(_BezierEdgeBase3['default']); + })(_utilBezierEdgeBase2['default']); exports['default'] = BezierEdgeDynamic; module.exports = exports['default']; @@ -39328,9 +39291,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x4, _x5, _x6) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x4, - property = _x5, - receiver = _x6; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x4 = parent; _x5 = property; _x6 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x4, _x5, _x6) { var _again = true; _function: while (_again) { var object = _x4, property = _x5, receiver = _x6; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x4 = parent; _x5 = property; _x6 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39338,9 +39299,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _BezierEdgeBase2 = __webpack_require__(112); + var _utilBezierEdgeBase = __webpack_require__(112); - var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); + var _utilBezierEdgeBase2 = _interopRequireDefault(_utilBezierEdgeBase); var BezierEdgeStatic = (function (_BezierEdgeBase) { function BezierEdgeStatic(options, body, labelModule) { @@ -39577,7 +39538,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return BezierEdgeStatic; - })(_BezierEdgeBase3['default']); + })(_utilBezierEdgeBase2['default']); exports['default'] = BezierEdgeStatic; module.exports = exports['default']; @@ -39594,9 +39555,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39604,9 +39563,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _EdgeBase2 = __webpack_require__(113); + var _utilEdgeBase = __webpack_require__(113); - var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); + var _utilEdgeBase2 = _interopRequireDefault(_utilEdgeBase); var StraightEdge = (function (_EdgeBase) { function StraightEdge(options, body, labelModule) { @@ -39689,7 +39648,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return StraightEdge; - })(_EdgeBase3['default']); + })(_utilEdgeBase2['default']); exports['default'] = StraightEdge; module.exports = exports['default']; @@ -39798,9 +39757,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39808,9 +39765,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); + var _utilNodeBase = __webpack_require__(109); - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var CircleImageBase = (function (_NodeBase) { function CircleImageBase(options, body, labelModule) { @@ -39916,7 +39873,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return CircleImageBase; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = CircleImageBase; module.exports = exports['default']; @@ -39933,9 +39890,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -39943,9 +39898,9 @@ return /******/ (function(modules) { // webpackBootstrap function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - var _NodeBase2 = __webpack_require__(109); + var _utilNodeBase = __webpack_require__(109); - var _NodeBase3 = _interopRequireDefault(_NodeBase2); + var _utilNodeBase2 = _interopRequireDefault(_utilNodeBase); var ShapeBase = (function (_NodeBase) { function ShapeBase(options, body, labelModule) { @@ -40017,7 +39972,7 @@ return /******/ (function(modules) { // webpackBootstrap }]); return ShapeBase; - })(_NodeBase3['default']); + })(_utilNodeBase2['default']); exports['default'] = ShapeBase; module.exports = exports['default']; @@ -40034,9 +39989,7 @@ return /******/ (function(modules) { // webpackBootstrap var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x2, - property = _x3, - receiver = _x4; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + var _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } @@ -40187,7 +40140,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var util = __webpack_require__(1); + var util = __webpack_require__(57); var EdgeBase = (function () { function EdgeBase(options, body, labelModule) { diff --git a/dist/vis.map b/dist/vis.map index 90f1dfbc..c35b501f 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","Images","dotparser","gephiParser","convertDot","input","DOTToGraph","convertGephi","options","parseGephi","Graph","Error","moment","hammer","Hammer","uuid","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","randomUUID","v4","assignAllKeys","obj","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","undefined","arguments","protoExtend","i","length","other","extend","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","isValidRGB","map","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","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","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","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","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","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","dataTable","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","getNumberOfColumns","getNumberOfRows","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","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","start","getCurrent","next","end","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","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","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","getValue","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","axis","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","configurator","Configurator","configureOptions","setGroups","setItems","_redraw","Core","Validator","printStyle","allOptions","markDirty","refreshItems","errorFound","validate","console","selection","getSelection","setSelection","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animation","fit","focus","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","centerContainer","itemFromTarget","groupFromTarget","customTime","customTimeFromTarget","snap","time","snappedTime","what","foreground","labelSet","groupId","pageX","srcEvent","pageY","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","duration","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","formattingFunction","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeRange","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","steps","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","initTime","anyChanged","dragging","ease","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","pointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","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","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","_contentToString","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","outerHTML","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","eventParams","drag","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","zeroCrossing","amountOfSteps","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","groupArray","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","ceil","valueAtBottom","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","interpolation","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","getData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","multiselect","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","isFirst","_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","oldSubGroupId","oldGroup","_constructByEndArray","itemProps","initialX","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","sideBySide","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarFunctions","LineFunctions","_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","sampledData","combinedDataLeft","combinedDataRight","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","tempGroups","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","pop","childNodes","nodeValue","_interopRequireDefault","__esModule","default","_this","clickToUse","nodes","nodeIndices","edges","edgeIndices","functions","createNode","createEdge","once","eventListeners","onTap","onTouch","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onMouseWheel","onPinch","onMouseMove","onRelease","onContext","view","bindEventListeners","images","_Groups2","_Canvas2","selectionHandler","_SelectionHandler2","interactionHandler","_InteractionHandler2","_View2","renderer","_CanvasRenderer2","physics","_PhysicsEngine2","layoutEngine","_LayoutEngine2","clustering","_ClusterEngine2","manipulation","_ManipulationSystem2","nodesHandler","_NodesHandler2","edgesHandler","_EdgesHandler2","_Configurator2","_allOptions$configureOptions","pixelRatio","_Groups","_NodesHandler","_EdgesHandler","_PhysicsEngine","_ClusterEngine","_CanvasRenderer","_Canvas","_View","_InteractionHandler","_SelectionHandler","_LayoutEngine","_ManipulationSystem","_Configurator","_Validator","_Validator2","Activator","layout","interaction","configure","networkOptions","global","setModuleOptions","activator","_createKeyBinds","_updateVisibleIndices","nodeId","edgeId","_this2","updatePhysicsData","_updateValueRange","unselectAll","dotData","gephi","gephiData","valueTotal","setValueRange","isActive","active","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","getBoundingBox","getConnectedNodes","objectId","getEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","selectNodes","selectEdges","getViewPosition","releaseNode","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","src","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","setValue","o","addNode","node","graphs","attr","addEdge","edge","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","setProp","names","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","NODE_ATTR_MAPPING","image","shape","convertEdge","dotEdge","graphEdge","EDGE_ATTR_MAPPING","arrows","subEdge","fontsize","fontcolor","labelfontcolor","fontname","fillcolor","labeltooltip","{","}","[","]",";","=",",","->","--","gephiJSON","optionsObj","inheritColor","fixed","gEdges","gNodes","gEdge","source","gNode","propagating","buf","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","getTime","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","_nodeId","n","rnds","random","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","_seedBytes","hammerUtil","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","properties","_redrawTimer","set","listeners","events","scrollTopMin","customTimes","redrawCount","_initAutoResize","component","appliedOptions","_stopAutoResize","addCustomTime","timestamp","some","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","_classCallCheck","instance","Constructor","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_ColorPicker","_ColorPicker2","parentModule","defaultContainer","changedOptions","allowCreation","showButton","moduleOptions","domElements","colorPicker","wrapper","_clean","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","insertTo","base","_len","_key","div","objectLabel","selectedValue","_update","_makeLabel","oninput","checkbox","checked","_this3","defaultColor","_showColorPicker","_this4","bodyRect","pickerX","pickerY","setColor","setCallback","colorString","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","solver","enabledPath","enabledValue","_makeColorField","_makeDropdown","_makeRange","_constructOptions","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","checkFields","__type__","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","_isAMomentObject","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","prefix","str","matrix","string","boolean","number","nada","undef","any","inputHandler","isTouching","isFinal","isReleasing","offTouch","offRelease","combinedData","groupLabel","intersections","_getDataIntersections","_getStackedYRange","accumulatedNegative","accumulatedPositive","xpos","coreDistance","amount","resolved","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","prevKey","Groups","defaultIndex","groupsArray","groupIndex","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_Node","_Node2","_Label","_Label2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","face","strokeColor","code","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","_properties","positionInitially","changedData","dataChanged","constructorClass","dataArray","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_Edge","_Edge2","EdgesHandler","edgesListeners","scaleFactor","inherit","dashes","hoverWidth","selectionWidth","selfReferenceSize","smooth","roundness","emitChange","edgeData","edgeOptions","dynamic","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","via","supportNodes","edgeType","colorDirty","_BarnesHutSolver","_BarnesHutSolver2","_Repulsion","_Repulsion2","_HierarchicalRepulsion","_HierarchicalRepulsion2","_SpringSolver","_SpringSolver2","_HierarchicalSpringSolver","_HierarchicalSpringSolver2","_CentralGravitySolver","_CentralGravitySolver2","_ForceAtlas2BasedRepulsionSolver","_ForceAtlas2BasedRepulsionSolver2","_ForceAtlas2BasedCentralGravitySolver","_ForceAtlas2BasedCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","freezeCache","renderTimer","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","iterations","updateInterval","onlyDynamicEdges","timestep","initPhysics","init","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","calculateForces","moveNodes","revert","nodeIds","vx","vy","nodesPresent","vminCorrected","nodeVelocity","_performStep","totalVelocity","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","_Cluster","_Cluster2","ClusterEngine","clusteredNodes","hubsize","_getHubSize","tyepof","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","_cloneOptions","_i","_cluster","clusters","visibleEdges","childNodeId","_getConnectedId","_checkIfUsed","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","amountOfConnections","newEdges","clusterEdgeProperties","childNode","otherNodeId","childKeys","processProperties","childNodesOptions","childEdgesOptions","clusterId","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","togglePhysics","minX","maxX","minY","maxY","clusterNodeId","containedNode","cleanup","clusteredNode","_clusterNode","newEdge","clusterStack","fromArray","average","averageSquared","hubCounter","largestHub","letiance","standardDeviation","hubThreshold","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedrawRequests","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","w","save","translate","_drawEdges","_drawNodes","controlNodesActive","_drawControlNodes","restore","resize","updateBoundingBox","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","connected","browserType","Canvas","resizeTimer","resizeFunction","hammerFrame","_cleanUp","tabIndex","_bindHammer","pinch","_prepareValue","emitEvent","oldWidth","oldHeight","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","specificNodes","zoomLevel","initialZoom","positionDefined","predefinedPosition","_getRange","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_lockedRedraw","finished","_NavigationHandler","_NavigationHandler2","_Popup","_Popup2","InteractionHandler","navigationHandler","popup","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","changedPointers","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdges","selectedNodes","selectObject","selectionObj","xFixed","yFixed","_handleDragStart","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","Node","Edge","SelectionHandler","hoverObj","selectConnectedEdges","updateSelection","selectionChanged","deselectObject","eventType","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","randomSeed","optionsBackup","hierarchical","levelSeparation","sortMethod","hierarchicalLevels","setupHierarchicalLayout","prevHierarchicalState","adaptAllOptions","nodesArray","isFixed","angle","seededRandom","definedLevel","undefinedLevel","nodeSpacing","_determineLevelsByHubsize","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","positionedNodes","_placeBranchNodes","hubSize","_setLevel","minLevel","_setLevelDirected","parentId","parentLevel","childNodeLevel","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","editNode","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","globalOptions","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","alert","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","positions","findBorderPositions","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","_performEditEdge","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","_this5","_this6","CanvasRenderingContext2D","circle","square","s2","ir","triangleDown","star","diamond","roundRect","r2d","ellipse","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","database","wEllipse","hEllipse","ymb","yeb","arrow","xt","yt","xi","yi","xl","yl","xr","yr","dashedLine","x2","y2","pattern","patternLength","slope","distRemaining","patternIndex","dashLength","overlay","_onTapOverlay","bodyHammer","prevent_default","_hasParent","deactivate","keycharm","escListener","activate","unbind","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError","mixin","_callbacks","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","utils_hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","res","hasOwnProp","create_utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","loadLocale","oldLocale","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","abbr","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","moment_calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","_processing","propagatedHandler","_handled","stopped","firstTarget","_handlers","Manager","PropagatingHammer","_on","_off","_emit","_destroy","pointerType","handler","exportName","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","each","iterator","dest","child","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","property","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","pointersLen","pointers","changedPointersLen","INPUT_START","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","rotation","getRotation","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","getVelocity","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","withState","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","_setColor","_generateHueCircle","storePrevious","_hide","_updatePicker","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","putImageData","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","newLeft","_Box","_Box2","_Circle","_Circle2","_CircularImage","_CircularImage2","_Database","_Database2","_Diamond","_Diamond2","_Dot","_Dot2","_Ellipse","_Ellipse2","_Icon","_Icon2","_Image","_Image2","_Square","_Square2","_Star","_Star2","_Text","_Text2","_Triangle","_Triangle2","_TriangleDown","_TriangleDown2","imagelist","grouplist","baseSize","baseFontSize","labelModule","status","groupObj","imageObj","distanceToBorder","sizeDiff","fontDiff","parentOptions","newOptions","parsedColor","_slicedToArray","Symbol","_arr","_n","_e","_s","err","Label","yLine","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_getColor","_getColor2","fontColor","_setAlignment","_setAlignment2","lineJoin","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_BezierEdgeDynamic","_BezierEdgeDynamic2","_BezierEdgeStatic","_BezierEdgeStatic2","_StraightEdge","_StraightEdge2","baseWidth","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","drawLine","drawArrows","drawLabel","viaNode","drawArrowHead","node1","node2","getPoint","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","BarnesHutSolver","barnesHutTree","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","_inherits","subClass","superClass","__proto__","_get","_x","_x2","_x3","_again","desc","receiver","getOwnPropertyDescriptor","getPrototypeOf","_BarnesHutSolver3","ForceAtlas2BasedRepulsionSolver","degree","_CentralGravitySolver3","ForceAtlas2BasedCentralGravitySolver","_Node3","Cluster","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","_stopMovement","configureKeyboardBindings","loadNavigationElements","cleanNavigation","_navigationReleaseOverload","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","boundAction","unbindFromRedraw","Popup","doShow","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","webpackContext","req","resolve","_NodeBase2","_NodeBase3","Box","_NodeBase","textSize","getTextSize","selectionLineWidth","enableShadow","disableShadow","_CircleImageBase2","_CircleImageBase3","Circle","_CircleImageBase","diameter","_drawRawCircle","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","labelOffset","_distanceToBorder","Database","networkScaleInv","_ShapeBase2","_ShapeBase3","Diamond","_ShapeBase","_resizeShape","_drawShape","Dot","Ellipse","Icon","_icon","iconTextSpacing","Square","Star","Text","Triangle","TriangleDown","_BezierEdgeBase2","_BezierEdgeBase3","BezierEdgeDynamic","_BezierEdgeBase","setupSupportNode","parentEdgeId","positionBezierNode","quadraticCurveTo","nearNode","_findBorderPositionBezier","x1","y1","x3","y3","_getDistanceToBezierEdge","_x4","_x5","_x6","BezierEdgeStatic","_getViaCoordinates","xVia","yVia","pi","originalAngle","myAngle","_EdgeBase2","_EdgeBase3","StraightEdge","_EdgeBase","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_getDistanceToLine","webpackPolyfill","paths","__webpack_amd_options__","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","CircleImageBase","ratio","globalAlpha","drawImage","labelDimensions","ShapeBase","sizeMultiplier","BezierEdgeBase","distanceToPoint","difference","minDistance","lastX","lastY","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData","_getCircleData2","_circle","lineCap","setLineDash","lineDashOffset","_getCircleData3","_getCircleData32","_getCircleData4","_getCircleData42","_findBorderPosition","_findBorderPositionCircle","_getCircleData5","_getCircleData52","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData6","_getCircleData62","px","py","something","u","arrowPos","guideOffset","findBorderPosition","guidePos","_angle","_getCircleData7","_getCircleData72","_length"],"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","Images","dotparser","gephiParser","convertDot","input","DOTToGraph","convertGephi","options","parseGephi","Graph","Error","moment","hammer","Hammer","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_componentsNodesCluster","_componentsNodesCluster2","ClusterEngine","body","_this","clusteredNodes","defaultOptions","extend","emitter","on","hubsize","undefined","_getHubSize","tyepof","_checkOptions","nodesToCluster","nodeIndices","node","nodes","edges","push","clusterByConnection","emit","arguments","refreshData","joinCondition","childNodesObj","childEdgesObj","nodeId","clonedOptions","_cloneOptions","_i","edge","_cluster","clusters","visibleEdges","j","hidden","childNodeId","_getConnectedId","_checkIfUsed","keys","edgeId","cluster","clusterNodeProperties","x","y","fixed","parentNodeId","parentClonedOptions","childClonedOptions","item","type","deepExtend","amountOfConnections","newEdges","clusterEdgeProperties","childNode","toId","fromId","otherNodeId","childKeys","from","to","randomUUID","functions","createEdge","processProperties","childNodesOptions","childEdgesOptions","clusterId","label","pos","_getClusterPosition","clusterNode","createNode","isCluster","containedNodes","containedEdges","_createClusterEdges","hasOwnProperty","togglePhysics","connect","console","log","minX","maxX","minY","maxY","clusterNodeId","containedNode","vx","vy","edgeType","cleanup","disconnect","clusteredNode","_clusterNode","physics","newEdge","clusterStack","findNode","pop","fromArray","toArray","max","counter","average","averageSquared","hubCounter","largestHub","Math","pow","letiance","standardDeviation","sqrt","hubThreshold","floor","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","parentNode","removeChild","getSVGElement","svgContainer","element","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","group","labelObj","point","drawPoints","style","setAttributeNS","size","styles","className","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","Array","isArray","_options","_data","_fieldId","fieldId","_type","field","convert","_subscribers","add","setOptions","queue","_queue","destroy","replace","event","callback","subscribers","subscribe","off","filter","listener","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","len","_addItem","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","getType","returnType","allowedValues","indexOf","itemId","_getItem","order","_sort","fields","_filterFields","result","getIds","getDataSet","forEach","map","mappedItems","filteredItem","isString","name","sort","a","b","av","bv","remove","removedId","removedIds","_remove","isNumber","clear","maxField","itemField","min","minField","distinct","values","fieldType","count","prop","exists","d","types","raw","converted","JSON","stringify","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","object","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","v","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataTable","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","create","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","getNumberOfColumns","getNumberOfRows","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","color","fontWeight","padding","innerHTML","left","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","addEventListener","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","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","top","right","lineWidth","font","ymin","ymax","f","hue","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","start","getCurrent","next","end","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","index","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","h","s","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","window","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","Date","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","preventDefault","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","removeEventListener","boundingRect","getBoundingClientRect","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","line","dot","dom","border","background","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","elem","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","step2","step5","toPrecision","getStep","groups","forthArgument","autoResize","orientation","axis","maxHeight","minHeight","_create","domProps","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","configurator","Configurator","configureOptions","setGroups","setItems","_redraw","Core","Validator","printStyle","allOptions","markDirty","refreshItems","errorFound","validate","selection","getSelection","setSelection","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animation","fit","focus","itemData","valueOf","e","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","getAbsoluteLeft","centerContainer","getAbsoluteTop","itemFromTarget","groupFromTarget","customTime","customTimeFromTarget","snap","time","snappedTime","getTarget","what","hasParent","foreground","labelSet","groupId","pageX","srcEvent","pageY","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","screenToValue","convertHiddenOptions","repeat","dateItem","toDate","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","duration","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","prevValue","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","formattingFunction","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeRange","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","returnValue","isMajor","steps","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","selectiveExtend","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","easingFunctions","join","initTime","anyChanged","dragging","ease","done","changed","newStart","newEnd","isNaN","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","pointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","collidingItem","jj","other","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","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","trim","toLowerCase","isVisible","box","dirty","parent","displayed","_updateContents","_updateTitle","_updateDataAttributes","_updateStyle","selected","_repaintDeleteButton","show","hide","repositionX","align","repositionY","itemSetHeight","select","unselect","groupChanged","_moveToGroup","setParent","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","template","_contentToString","Element","removeAttribute","dataAttributes","attributes","setAttribute","removeCssText","addCssText","outerHTML","baseClassName","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","t","getCurrentTime","eventParams","drag","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","Number","minWidth","stepPixels","zeroCrossing","amountOfSteps","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","groupArray","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","ceil","valueAtBottom","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","selectiveBridgeObject","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","selectiveDeepExtend","mergeOptions","interpolation","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","enabled","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","getData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","orderedItems","byStart","byEnd","checkRangedItems","inner","marker","removeClassName","addClassName","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","slice","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","updateProperty","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","splice","removeItem","array","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","searchFunction","_checkIfVisibleWithReference","initialPosByStart","binarySearchCustom","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","multiselect","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","isFirst","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","asSize","option","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","constructor","_removeItem","groupOptions","equalArray","oldGroupId","oldSubGroupId","oldGroup","_constructByEndArray","itemProps","initialX","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","sideBySide","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarFunctions","LineFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","binarySearchValue","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","combinedDataLeft","combinedDataRight","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","tempGroups","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","childNodes","nodeValue","clickToUse","edgeIndices","once","eventListeners","onTap","onTouch","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onMouseWheel","onPinch","onMouseMove","onRelease","onContext","view","bindEventListeners","images","_modulesGroups2","_modulesCanvas2","selectionHandler","_modulesSelectionHandler2","interactionHandler","_modulesInteractionHandler2","_modulesView2","renderer","_modulesCanvasRenderer2","_modulesPhysicsEngine2","layoutEngine","_modulesLayoutEngine2","clustering","_modulesClustering2","manipulation","_modulesManipulationSystem2","nodesHandler","_modulesNodesHandler2","edgesHandler","_modulesEdgesHandler2","_sharedConfigurator2","_optionsJs","pixelRatio","_modulesGroups","_modulesNodesHandler","_modulesEdgesHandler","_modulesPhysicsEngine","_modulesClustering","_modulesCanvasRenderer","_modulesCanvas","_modulesView","_modulesInteractionHandler","_modulesSelectionHandler","_modulesLayoutEngine","_modulesManipulationSystem","_sharedConfigurator","_sharedValidator","_sharedValidator2","Activator","layout","interaction","configure","networkOptions","global","setModuleOptions","activator","_createKeyBinds","_updateVisibleIndices","_this2","updatePhysicsData","_updateValueRange","unselectAll","dotData","gephi","gephiData","recursiveDOMDelete","valueTotal","setValueRange","isActive","active","canvasToDOM","DOMtoCanvas","openCluster","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","getBoundingBox","getConnectedNodes","objectId","getEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","selectNodes","selectEdges","getViewPosition","releaseNode","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","src","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","test","merge","setValue","split","o","addNode","graphs","attr","g","addEdge","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","substr","forEach2","array1","array2","elem1","elem2","setProp","names","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","String","NODE_ATTR_MAPPING","image","shape","convertEdge","dotEdge","graphEdge","EDGE_ATTR_MAPPING","arrows","subEdge","fontsize","fontcolor","labelfontcolor","fontname","fillcolor","labeltooltip","{","}","[","]",";","=",",","->","--","gephiJSON","optionsObj","inheritColor","parseColor","gEdges","gNodes","gEdge","source","gNode","highlight","hover","propagating","parse","buf","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","getTime","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","_nodeId","n","v4","rnds","random","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","r","toString","_seedBytes","uuid","hammerUtil","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","properties","_redrawTimer","set","listeners","events","scrollTopMin","customTimes","redrawCount","_initAutoResize","component","appliedOptions","_stopAutoResize","addCustomTime","timestamp","some","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","_ColorPicker","_ColorPicker2","parentModule","defaultContainer","changedOptions","allowCreation","showButton","moduleOptions","domElements","colorPicker","wrapper","_clean","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","insertTo","base","_len","_key","div","objectLabel","selectedValue","_update","_makeLabel","defaultValue","oninput","checkbox","checked","_this3","defaultColor","_showColorPicker","_this4","bodyRect","pickerX","pickerY","setColor","setCallback","colorString","checkOnly","visibleInSet","subObj","newPath","copyAndExtendArray","_getValue","_handleArray","_makeTextInput","_makeCheckbox","solver","enabledPath","enabledValue","_makeColorField","_makeDropdown","_makeRange","_constructOptions","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","checkFields","__type__","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","Boolean","nodeType","_isAMomentObject","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","copyArray","prefix","str","matrix","string","boolean","number","nada","undef","any","inputHandler","isTouching","isFinal","isReleasing","offTouch","offRelease","combinedData","groupLabel","intersections","_getDataIntersections","_getStackedYRange","accumulatedNegative","accumulatedPositive","xpos","coreDistance","amount","resolved","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","prevKey","Groups","defaultIndex","groupsArray","groupIndex","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_componentsNode","_componentsNode2","_componentsSharedLabel","_componentsSharedLabel2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","face","strokeColor","code","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","total","shadow","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","_properties","positionInitially","changedData","dataChanged","constructorClass","dataArray","boundingBox","nodeList","nodeObj","edgeList","_componentsEdge","_componentsEdge2","EdgesHandler","edgesListeners","scaleFactor","inherit","opacity","dashes","hoverWidth","selectionWidth","selfReferenceSize","smooth","roundness","emitChange","edgeData","edgeOptions","dynamic","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","oldEdgesData","edgesData","oldEdge","showInternalIds","via","supportNodes","colorDirty","_componentsPhysicsBarnesHutSolver","_componentsPhysicsBarnesHutSolver2","_componentsPhysicsRepulsionSolver","_componentsPhysicsRepulsionSolver2","_componentsPhysicsHierarchicalRepulsionSolver","_componentsPhysicsHierarchicalRepulsionSolver2","_componentsPhysicsSpringSolver","_componentsPhysicsSpringSolver2","_componentsPhysicsHierarchicalSpringSolver","_componentsPhysicsHierarchicalSpringSolver2","_componentsPhysicsCentralGravitySolver","_componentsPhysicsCentralGravitySolver2","_componentsPhysicsFA2BasedRepulsionSolver","_componentsPhysicsFA2BasedRepulsionSolver2","_componentsPhysicsFA2BasedCentralGravitySolver","_componentsPhysicsFA2BasedCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","freezeCache","renderTimer","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","iterations","updateInterval","onlyDynamicEdges","timestep","initPhysics","selectiveNotDeepExtend","init","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","calculateForces","moveNodes","revert","nodeIds","nodesPresent","vminCorrected","nodeVelocity","_performStep","totalVelocity","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","DOMobject","giveRange","isDate","match","ASPDateRegex","exec","assignAllKeys","fillIfDefined","allowDeletion","protoExtend","isMoment","toISOString","newArr","classes","action","useCapture","navigator","userAgent","attachEvent","detachEvent","srcElement","asBoolean","asNumber","asString","asElement","hexToRGB","hex","shorthandRegex","overrideOpacity","rgb","RGBToHex","red","green","blue","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","RGBToHSV","minRGB","maxRGB","saturation","cssUtil","cssText","parts","currentStyles","newStyles","removeStyles","HSVToRGB","q","isOk","isValidRGBA","rgba","referenceObject","objectTo","bridgeObject","mergeTarget","field2","maxIterations","iteration","low","high","searchResult","sidePreference","nextValue","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedrawRequests","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","w","save","translate","_drawEdges","_drawNodes","controlNodesActive","_drawControlNodes","restore","resize","updateBoundingBox","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","connected","browserType","Canvas","resizeTimer","resizeFunction","hammerFrame","_cleanUp","tabIndex","_bindHammer","pinch","_prepareValue","emitEvent","oldWidth","oldHeight","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","specificNodes","zoomLevel","initialZoom","positionDefined","predefinedPosition","_getRange","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_lockedRedraw","finished","_componentsNavigationHandler","_componentsNavigationHandler2","_componentsPopup","_componentsPopup2","InteractionHandler","navigationHandler","popup","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","changedPointers","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdges","selectedNodes","selectObject","selectionObj","xFixed","yFixed","_handleDragStart","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","Node","Edge","SelectionHandler","hoverObj","selectConnectedEdges","updateSelection","selectionChanged","deselectObject","eventType","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","randomSeed","optionsBackup","hierarchical","levelSeparation","sortMethod","hierarchicalLevels","setupHierarchicalLayout","prevHierarchicalState","adaptAllOptions","nodesArray","isFixed","angle","seededRandom","definedLevel","undefinedLevel","nodeSpacing","_determineLevelsByHubsize","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","positionedNodes","_placeBranchNodes","hubSize","_setLevel","minLevel","_setLevelDirected","parentId","parentLevel","childNodeLevel","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","editNode","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","globalOptions","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","alert","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","positions","findBorderPositions","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","_performEditEdge","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","_this5","_this6","CanvasRenderingContext2D","circle","square","s2","ir","triangleDown","star","diamond","roundRect","r2d","ellipse","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","database","wEllipse","hEllipse","ymb","yeb","arrow","xt","yt","xi","yi","xl","yl","xr","yr","dashedLine","x2","y2","pattern","patternLength","slope","distRemaining","patternIndex","dashLength","overlay","_onTapOverlay","bodyHammer","prevent_default","_hasParent","deactivate","keycharm","escListener","activate","unbind","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError","mixin","_callbacks","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","utils_hooks__hooks","hookCallback","setHookCallback","res","hasOwnProp","create_utc__createUTC","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","getParsingFlags","_pf","valid__isValid","_isValid","flags","_strict","bigHour","valid__createInvalid","NaN","copyConfig","val","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","loadLocale","oldLocale","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","abbr","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","msgWithStack","deprecateSimple","deprecations","configFromISO","l","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","moment_calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","_processing","propagatedHandler","_handled","stopped","firstTarget","_handlers","Manager","PropagatingHammer","_on","_off","_emit","_destroy","pointerType","handler","exportName","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","each","iterator","dest","child","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","property","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","pointersLen","pointers","changedPointersLen","INPUT_START","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","rotation","getRotation","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","getVelocity","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","withState","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","_setColor","_generateHueCircle","storePrevious","_hide","_updatePicker","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","putImageData","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","newLeft","_sharedLabel","_sharedLabel2","_nodesShapesBox","_nodesShapesBox2","_nodesShapesCircle","_nodesShapesCircle2","_nodesShapesCircularImage","_nodesShapesCircularImage2","_nodesShapesDatabase","_nodesShapesDatabase2","_nodesShapesDiamond","_nodesShapesDiamond2","_nodesShapesDot","_nodesShapesDot2","_nodesShapesEllipse","_nodesShapesEllipse2","_nodesShapesIcon","_nodesShapesIcon2","_nodesShapesImage","_nodesShapesImage2","_nodesShapesSquare","_nodesShapesSquare2","_nodesShapesStar","_nodesShapesStar2","_nodesShapesText","_nodesShapesText2","_nodesShapesTriangle","_nodesShapesTriangle2","_nodesShapesTriangleDown","_nodesShapesTriangleDown2","imagelist","grouplist","baseSize","baseFontSize","labelModule","status","groupObj","imageObj","distanceToBorder","sizeDiff","fontDiff","parentOptions","newOptions","parsedColor","_slicedToArray","Symbol","_arr","_n","_e","_s","err","Label","yLine","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_getColor","_getColor2","fontColor","_setAlignment","_setAlignment2","lineJoin","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_edgesBezierEdgeDynamic","_edgesBezierEdgeDynamic2","_edgesBezierEdgeStatic","_edgesBezierEdgeStatic2","_edgesStraightEdge","_edgesStraightEdge2","baseWidth","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","drawLine","drawArrows","drawLabel","viaNode","drawArrowHead","node1","node2","getPoint","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","BarnesHutSolver","barnesHutTree","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","_inherits","subClass","superClass","__proto__","_get","_x","_x2","_x3","_again","receiver","desc","getOwnPropertyDescriptor","getPrototypeOf","_BarnesHutSolver2","_BarnesHutSolver3","ForceAtlas2BasedRepulsionSolver","_BarnesHutSolver","degree","_CentralGravitySolver2","_CentralGravitySolver3","ForceAtlas2BasedCentralGravitySolver","_CentralGravitySolver","_Node2","_Node3","Cluster","_Node","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","_stopMovement","configureKeyboardBindings","loadNavigationElements","cleanNavigation","_navigationReleaseOverload","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","boundAction","unbindFromRedraw","Popup","doShow","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","webpackContext","req","resolve","_utilNodeBase","_utilNodeBase2","Box","_NodeBase","textSize","getTextSize","selectionLineWidth","enableShadow","disableShadow","_utilCircleImageBase","_utilCircleImageBase2","Circle","_CircleImageBase","diameter","_drawRawCircle","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","labelOffset","_distanceToBorder","Database","networkScaleInv","_utilShapeBase","_utilShapeBase2","Diamond","_ShapeBase","_resizeShape","_drawShape","Dot","Ellipse","Icon","_icon","iconTextSpacing","Square","Star","Text","Triangle","TriangleDown","_utilBezierEdgeBase","_utilBezierEdgeBase2","BezierEdgeDynamic","_BezierEdgeBase","setupSupportNode","parentEdgeId","positionBezierNode","quadraticCurveTo","nearNode","_findBorderPositionBezier","x1","y1","x3","y3","_getDistanceToBezierEdge","_x4","_x5","_x6","BezierEdgeStatic","_getViaCoordinates","xVia","yVia","pi","originalAngle","myAngle","_utilEdgeBase","_utilEdgeBase2","StraightEdge","_EdgeBase","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_getDistanceToLine","webpackPolyfill","paths","__webpack_amd_options__","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","CircleImageBase","ratio","globalAlpha","drawImage","labelDimensions","ShapeBase","sizeMultiplier","_EdgeBase2","_EdgeBase3","BezierEdgeBase","distanceToPoint","difference","minDistance","lastX","lastY","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData","_getCircleData2","_circle","lineCap","setLineDash","lineDashOffset","_getCircleData3","_getCircleData32","_getCircleData4","_getCircleData42","_findBorderPosition","_findBorderPositionCircle","_getCircleData5","_getCircleData52","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData6","_getCircleData62","px","py","something","u","arrowPos","guideOffset","findBorderPosition","guidePos","_angle","_getCircleData7","_getCircleData72","_length"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 63258c5a..e4bc62a0 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 4.0.0-SNAPSHOT + * @version 4.0.0 * @date 2015-05-22 * * @license @@ -22,27 +22,21 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(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={Images:i(37),dotparser:i(38),gephiParser:i(39)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41),e.Hammer=i(41)},function(t,e,i){var o=i(40),n=i(42);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=s.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return n.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!=typeof t[i]&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=void 0===arguments[2]?!1:arguments[2];for(var n in t)void 0!==i[n]&&("object"!=typeof i[n]?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"==typeof t[n]&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;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(o.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])):o(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return o(t);if(t instanceof Date)return o(t.valueOf());if(o.isMoment(t))return o(t);if(e.isString(t))return n=s.exec(t),o(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(o.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=s.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=s.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 s=/^\/?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":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;oi;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,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var r={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=r.split(t.style.cssText),n=r.split(i),s=e.extend(o,n);t.style.cssText=r.join(s)},e.removeCssText=function(t,e){var i=r.split(t.style.cssText),o=r.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=r.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var o=Object.create(i),n=0;n=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o){for(var n,s,r,a,h=1e4,d=0,l=0,u=t.length-1;u>=l&&h>d;){if(a=Math.floor(.5*(u+l)),n=t[Math.max(0,a-1)][i],s=t[a][i],r=t[Math.min(t.length-1,a+1)][i],s==e)return a;if(e>n&&s>e)return"before"==o?Math.max(0,a-1):a;if(e>s&&r>e)return"before"==o?a:Math.min(t.length-1,a+1);e>s?l=a+1:u=a-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.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,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.options.drawPoints.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.options.drawPoints.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*o.options.drawPoints.size),a.setAttributeNS(null,"width",o.options.drawPoints.size),a.setAttributeNS(null,"height",o.options.drawPoints.size)),void 0!==o.options.drawPoints.styles&&a.setAttributeNS(null,"style",o.group.options.drawPoints.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var o=this._options.type[i];"Date"==o||"ISODate"==o||"ASPDate"==o?this._type[i]="Date":this._type[i]=o}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n=i(1),s=i(5);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=s.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0;ns;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],n=[],s=this,r=s._fieldId,a=function(t){var e=t[r];s._data[e]?(e=s._updateItem(t),o.push(e),n.push(t)):(e=s._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),o.length&&this._trigger("update",{items:o,data:n},e),i.concat(o)},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,u,c,p=o&&o.type||this._options.type,f=o&&o.filter,m=[];if(void 0!=e)d=s._getItem(e,p),f&&!f(d)&&(d=null);else if(void 0!=i)for(u=0,c=i.length;c>u;u++)d=s._getItem(i[u],p),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=s._getItem(l,p),(!f||f(d))&&m.push(d));if(o&&o.order&&void 0==e&&this._sort(m,o.order),o&&o.fields){var v=o.fields;if(void 0!=e)d=this._filterFields(d,v);else for(u=0,c=m.length;c>u;u++)m[u]=this._filterFields(m[u],v)}if("Object"==a){var g={};for(u=0;ue;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=this._getItem(o,d),a(n)&&l.push(n[this._fieldId]));else if(h){s=[];for(o in r)r.hasOwnProperty(o)&&s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=r[o],l.push(n[this._fieldId]));return l},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n=e&&e.filter,s=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],o=i[this._fieldId],t(i,o);else for(o in r)r.hasOwnProperty(o)&&(i=this._getItem(o,s),(!n||n(i))&&t(i,o))},o.prototype.map=function(t,e){var i,o=e&&e.filter,n=e&&e.type||this._options.type,s=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,n),(!o||o(i))&&s.push(t(i,a)));return e&&e.order&&this._sort(s,e.order),s},o.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var o in t)t.hasOwnProperty(o)&&-1!=e.indexOf(o)&&(i[o]=t[o]);else for(var o in t)t.hasOwnProperty(o)&&e.hasOwnProperty(o)&&(i[e[o]]=t[o]);return i},o.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(n.isNumber(t)||n.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},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||r>o)&&(i=s,o=r)}return i},o.prototype.min=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||o>r)&&(i=s,o=r)}return i},o.prototype.distinct=function(t){var e,i=this._data,o=[],s=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(o[e]==d){l=!0;break}l||void 0===d||(o[r]=d,r++)}if(s)for(e=0;ei;i++)n=e[i],this._ids[n]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},o=[],n=[],s=0;so;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}o.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},o.extend=function(t,e){var i=new o(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;sthis.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)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))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 n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.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 c,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 n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(69),a=i(3),h=i(4),d=i(1),l=i(10),u=i(9),c=i(7),p=i(8),f=i(11),m=i(12);r(o.prototype),o.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!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.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)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;ot[o][e]&&(i.min=t[o][e]),i.maxt;t++){var f=(t-c)/(p-c),v=240*f,g=this._hsv2rgb(v,1,1);u.strokeStyle=g,u.beginPath(),u.moveTo(h,r+t),u.lineTo(a,r+t),u.stroke()}u.strokeStyle=this.colorAxis,u.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(u.strokeStyle=this.colorAxis,u.fillStyle=this.colorDot,u.beginPath(),u.moveTo(h,r),u.lineTo(a,r),u.lineTo(a-i+e,d),u.lineTo(h,d),u.closePath(),u.fill(),u.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new m(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,n=this._convert3Dto2D(new l(_,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(v.lineWidth=1,o=void 0===this.defaultYStep,i=new m(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,n=this._convert3Dto2D(new l(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(v.lineWidth=1,o=void 0===this.defaultZStep,i=new m(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(s,r,i.getCurrent())),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(t.x-b,t.y),v.stroke(),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();v.lineWidth=1,t=this._convert3Dto2D(new l(s,r,this.zMin)),e=this._convert3Dto2D(new l(s,r,this.zMax)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),v.lineWidth=1,c=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),c=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),v.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke();var x=this.xLabel;x.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-u:this.yMax+u,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(k,n.x,n.y));var M=this.zLabel;M.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new l(s,r,a)),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(M,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,u,c,p,f,m=this.frame.canvas,v=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+n.point.z)/4,u=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),c=1,this.showShadow?(p=Math.min(1+k.x/M/2,1),a=this._hsv2rgb(u,c,p),h=a):(p=1,a=this._hsv2rgb(u,c,p),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,v.lineWidth=d,v.fillStyle=a,v.strokeStyle=h,v.beginPath(),v.moveTo(t.screen.x,t.screen.y),v.lineTo(e.screen.x,e.screen.y),v.lineTo(n.screen.x,n.screen.y),v.lineTo(i.screen.x,i.screen.y),v.closePath(),v.fill(),v.stroke()}}else for(s=0;sc&&(c=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],o.lineWidth=1,o.strokeStyle="blue",o.beginPath(),o.moveTo(t.screen.x,t.screen.y)),e=1;e0&&o.stroke()}},o.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=n(t),this.startMouseY=s(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)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=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(o))0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;ib)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=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",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="
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(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(10);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1: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 n=i(4);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]; - -},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(to&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(){this._current=this._start-this._start%this._step},o.prototype.next=function(){this._current+=this._step},o.prototype.end=function(){return this._current>this._end},t.exports=o},function(t,e,i){function o(t,e,i,h){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof s||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var f=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.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 f.timeAxis.step.scale},getStep:function(){return f.timeAxis.step.step},toScreen:f._toScreen.bind(f),toGlobalScreen:f._toGlobalScreen.bind(f),toTime:f._toTime.bind(f),toGlobalTime:f._toGlobalTime.bind(f)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.itemSet=new c(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){f.emit("click",f.getEventProperties(t))}),this.on("doubletap",function(t){f.emit("doubleClick",f.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){f.emit("contextmenu",f.getEventProperties(t))},this.configurator=new p(this,t,g),h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(69),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(32),p=i(44),f=i(45)["default"],m=i(45).printStyle,v=i(46).allOptions,g=i(46).configureOptions;o.prototype=new h,o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){var e=f.validate(t,v);if(e===!0&&console.log("%cErrors have been found in the supplied options object.",m),h.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;if(i){var o=this.getSelection();this.setItems(null),this.setItems(i),this.setSelection(o)}}},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(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 o=this._getDataRange();var n=void 0!=this.options.start?this.options.start:o.start,a=void 0!=this.options.end?this.options.end:o.end;this.setWindow(n,a,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},o.prototype.getItemRange=function(){var t=this.itemsData&&this.itemsData.getDataSet(),e=null,i=null;if(t){var o=t.min("start");e=o?n.convert(o.start,"Date").valueOf():null;var s=t.max("start");s&&(i=n.convert(s.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?n.convert(r.end,"Date").valueOf():Math.max(i,n.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this.itemSet.itemFromTarget(t),a=this.itemSet.groupFromTarget(t),h=u.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),c=this.body.util.getStep(),p=this._toTime(o),f=d?d(p,l,c):p,m=n.getTarget(t),v=null;return null!=r?v="item":null!=h?v="custom-time":n.hasParent(m,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&n.hasParent(m,this.timeAxis2.dom.foreground)?v="axis":n.hasParent(m,this.itemSet.dom.labelSet)?v="group-label":n.hasParent(m,this.currentTime.bar)?v="current-time":n.hasParent(m,this.dom.center)&&(v="background"),{event:t,item:r?r.id:null,group:a?a.groupId:null,what:v,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:s,time:p,snappedTime:f}},t.exports=o},function(t,e,i){function o(t,e,i,o){if(!(Array.isArray(i)||i instanceof s)&&i instanceof Object){var r=o;o=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.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.linegraph=new c(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},this.configurator=new p(this,t,g),o&&this.setOptions(o),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(69),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(34),p=i(44),f=i(45)["default"],m=i(45).printStyle,v=i(47).allOptions,g=i(47).configureOptions;o.prototype=new h,o.prototype.setOptions=function(t){var e=f.validate(t,v);e===!0&&console.log("%cErrors have been found in the supplied options object.",m),h.prototype.setOptions.call(this,t)},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.linegraph.setGroups(e)},o.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},o.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},o.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 o=0;or?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}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(o),a=u.customTimeFromTarget(t),h=n.getTarget(t),d=null;n.hasParent(h,this.timeAxis.dom.foreground)?d="axis":this.timeAxis2&&n.hasParent(h,this.timeAxis2.dom.foreground)?d="axis":n.hasParent(h,this.linegraph.yAxisLeft.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.yAxisRight.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.legendLeft.dom.frame)?d="legend":n.hasParent(h,this.linegraph.legendRight.dom.frame)?d="legend":null!=a?d="custom-time":n.hasParent(h,this.currentTime.bar)?d="current-time":n.hasParent(h,this.dom.center)&&(d="background");var l=[],c=this.linegraph.yAxisLeft,p=this.linegraph.yAxisRight;return c.hidden||l.push(c.screenToValue(s)),p.hidden||l.push(p.screenToValue(s)),{event:t,what:d,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:s,time:r,value:l}},t.exports=o},function(t,e,i){var o=i(40);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var c=0,p=s.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;p>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 v=e.isHidden(t.range.start,t.hiddenDates),g=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==v.hidden&&(y=1==t.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==t.range.endToFront?g.startDate-1:g.endDate+1),(1==v.hidden||1==g.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&a>n){i=!0;break}}if(1==i&&n=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,n){return n=o(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,n)},e.getHiddenDurationBefore=function(t,e,i){var n=0;i=o(i).toDate().valueOf();for(var s=0;s=e.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(t,e,i,o,n,s,r){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.formattingFunction=s,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=r,this.setRange(t,e,i,o,n)}o.prototype.setRange=function(t,e,i,o,n){this._start=void 0===n.min?t:n.min,this._end=void 0===n.max?e:n.max,this._start===this._end&&(this._start=void 0===n.min?this._start-.75:this._start,this._end=void 0===n.max?this._end+1:this._end),this.autoScale===!0&&this.setMinimumStep(i,o),this.setFirst(n)},o.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,o=1.2*i,n=t*(o/e),s=Math.round(Math.log(o)/Math.LN10),r=-1,a=Math.pow(10,s),h=0;0>s&&(h=s);for(var d=!1,l=h;Math.abs(l)<=Math.abs(s);l++){a=Math.pow(10,l);for(var u=0;u=n){d=!0,r=u;break}}if(d===!0)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},o.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.alignZeros===!0&&(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},o.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},o.prototype.hasNext=function(){return this.current>=this.marginStart},o.prototype.next=function(){var t=this.current;this.current-=this.step,this.current===t&&(this.current=this._end)},o.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},o.prototype.getCurrent=function(){var t=Math.abs(this.current)t)for(var e=0;-t>e;e++)this.previous();else if(t>0)for(var e=0;t>e;e++)this.next()},t.exports=o},function(t,e,i){function o(t,e){var i=a().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.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",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 n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function s(t,e){return{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}}var r=i(1),a=(i(48),i(40)),h=i(25),d=i(15);o.prototype=new h,o.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)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,s=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,l=this.end,u="object"==typeof i&&"duration"in i?i.duration:500,c="object"==typeof i&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",p=r.easingFunctions[c];if(!p)throw new Error("Unknown easing function "+JSON.stringify(c)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var f=(new Date).valueOf(),m=!1,v=function b(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-f,i=p(e/u),r=e>u,c=r||null===n?n:h+(n-h)*i,v=r||null===s?s:l+(s-l)*i;g=a._applyRange(c,v),d.updateHiddenDates(a.body,a.options.hiddenDates),m=m||g,g&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:o}),r?m&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:o}):a.animationTimer=setTimeout(b,20)}};return v()}var g=this._applyRange(n,s);if(d.updateHiddenDates(this.body,this.options.hiddenDates),g){var y={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",y),this.body.emitter.emit("rangechanged",y)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=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(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&nd&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){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"))},o.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*o,h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},o.prototype._onDragEnd=function(t){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}))},o.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 o=s({x:t.clientX,y:t.clientY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=s(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=o-n,a=i-n+(this.props.touch.start-(i-n))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var l=d.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(l!=a||u!=h)&&(this.props.touch.start=l,this.props.touch.end=u,this.scaleOffset=1-t.scale,a=l,h=u),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o), -t.y/e.scale+e.offset},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||l!=a)&&(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e,i){var o=.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,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];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 o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+oe.top}},function(t,e,i){function o(t,e,i,n){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=n,void 0===n&&(this.hiddenDates=[]),this.format=o.FORMAT}var n=i(40),s=i(15),r=i(1);o.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:""}},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.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)},o.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},o.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)}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.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)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=new Date(t.valueOf());if("year"==e){var n=o.getFullYear()+Math.round(o.getMonth()/12);o.setFullYear(Math.round(n/i)*i),o.setMonth(0),o.setDate(0),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("month"==e)o.getDate()>15?(o.setDate(1),o.setMonth(o.getMonth()+1)):o.setDate(1),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.setHours(24*Math.round(o.getHours()/24));break;default:o.setHours(12*Math.round(o.getHours()/12))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.setHours(12*Math.round(o.getHours()/12));break;default:o.setHours(6*Math.round(o.getHours()/6))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:o.setMinutes(60*Math.round(o.getMinutes()/60));break;default:o.setMinutes(30*Math.round(o.getMinutes()/30))}o.setSeconds(0),o.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.setMinutes(5*Math.round(o.getMinutes()/5)),o.setSeconds(0);break;case 5:o.setSeconds(60*Math.round(o.getSeconds()/60));break;default:o.setSeconds(30*Math.round(o.getSeconds()/30))}o.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.setSeconds(5*Math.round(o.getSeconds()/5)),o.setMilliseconds(0);break;case 5:o.setMilliseconds(1e3*Math.round(o.getMilliseconds()/1e3));break;default:o.setMilliseconds(500*Math.round(o.getMilliseconds()/500))}else if("millisecond"==e){var s=i>5?i/2:1;o.setMilliseconds(Math.round(o.getMilliseconds()/s)*s)}return o},o.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}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(n().add(1,"day"),"day")?" vis-tomorrow":t.isSame(n().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function s(t){return t.isSame(new Date,"year")?" vis-current-year":""}var r=n(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+"-h"+(d+4)),"vis-h"+d+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"vis-day"+l+" vis-"+u+o(a)+t(l-1);case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"vis-year"+c+s(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(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 n=i(41),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="vis-delete",i.title="Delete this item",new n(i).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)},o.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;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){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}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.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},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].indexr&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(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=o},function(t,e,i){function o(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);n.call(this,t,e,i)}{var n=i(20);i(1)}o.prototype=new n(null,null,null),o.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},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),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?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e){this.options=null,this.props=null}o.prototype.setOptions=function(t){t&&util.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(25),r=i(40),a=i(49);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={locales:h,locale:"en",id:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(25),a=i(40),h=i(49);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time",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=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this))},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");return o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.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,left:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0, -end:0},this.options=n.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.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(2),r=i(25),a=i(16);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.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","left","right","alignZeros"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.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)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a0&&(t=0),this.range.start=t,this.range.end=e},o.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)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||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=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.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,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var e,i=this.options.orientation;if(this.master===!1){var o,n,r,h;-1!==this.zeroCrossing&&this.options.alignZeros===!0?this.range.end>0?(o=this.range.end/this.zeroCrossing,n=this.range.end-this.amountOfSteps*o,r=this.range.end):(o=-1*this.range.start/(this.amountOfSteps-this.zeroCrossing),n=this.range.start,r=this.range.start+o*this.amountOfSteps):(n=this.range.start,r=this.range.end),h=this.stepPixels}else h=this.props.majorCharHeight,n=this.range.start,r=this.range.end;if(this.step=e=new a(n,r,h,this.dom.frame.offsetHeight,this.options[this.options.orientation].range,this.options[this.options.orientation].format,this.master===!1&&this.options.alignZeros),this.master===!0)this.stepPixels=this.dom.frame.offsetHeight/e.marginRange*e.step,this.amountOfSteps=Math.ceil(this.dom.frame.offsetHeight/this.stepPixels);else if(this.options.alignZeros===!0&&-1!==this.zeroCrossing){var d=(e.current-this.zeroCrossing*e.step)/e.step;this.step.shift(d)}this.valueAtBottom=e.marginEnd,this.maxLabelSize=0;for(var l=0,u=0,c=!1;u0&&u!==this.amountOfSteps&&((this.options.showMinorLabels&&c===!1||this.master===!1&&this.options.showMinorLabels===!0)&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-minor",this.props.minorCharHeight),c&&this.options.showMajorLabels&&this.master===!0||this.options.showMinorLabels===!1&&this.master===!1&&c===!0?(l>=0&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-major",this.props.majorCharHeight),this._redrawLine(l,i,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(l,i,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth)),this.master===!0&&0===e.current&&(this.zeroCrossing=u),e.next(),u+=1;this.master===!0&&0===e.current&&(this.zeroCrossing=u),this.conversionFactor=this.stepPixels/e.step;var p=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(p=this.props.titleCharHeight);var f=this.options.icons===!0?Math.max(this.options.iconWidth,p)+this.options.labelOffsetX+15:p+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-f&&this.options.visible===!0?(this.width=this.maxLabelSize+f,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+f),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),t=!1),t},o.prototype.convertValue=function(t){var e=this.valueAtBottom-t,i=e*this.conversionFactor;return i},o.prototype.screenToValue=function(t){return this.valueAtBottom-t/this.conversionFactor},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,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*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var f=this.visibleItems[c];f.repositionY(e)}return o},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var o=this;if(i.length>0){var s=i[0].top,r=i[0].top+i[0].height;if(n.forEach(i,function(t){s=Math.min(s,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(o.subgroups[t.data.subgroup].height=Math.max(o.subgroups[t.data.subgroup].height,t.height),o.subgroups[t.data.subgroup].visible=!0)}),s>t.axis){var a=s-t.axis;r-=a,n.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,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)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(s=0;sl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;sl})}for(s=0;s=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;rn;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrder:null,selectable:!0,multiselect:!1,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}},this.options=s.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,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),u=i(31),c=i(22),p=i(23),f=i(24),m=i(21),v="__ungrouped__",g="__background__";o.prototype=new d,o.types={background:m,box:c,range:f,point:p},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var s=document.createElement("div");s.className="vis-labelset",this.dom.labelSet=s,this._updateUngrouped();var r=new u(g,null,this);r.show(),this.groups[g]=r,this.hammer=new n(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","align","order","stack","selectable","multiselect","groupOrder","dataAttributes","template","hide","snap"];s.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"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&&(s.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&&s.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&&s.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()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&s.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.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)},o.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)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;ae&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=s.option.asSize,o=this.options,n=o.orientation.item,r=!1,a=this.dom.frame,h=o.editable.updateTime||o.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="vis-itemset"+(h?" vis-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 u=this.stackDirty,c=this._firstGroup(),p={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,f,u),s.forEach(this.groups,function(t){var i=t==c?p:f,o=t.redraw(e,i,u);r=o||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==n?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},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){{var t,e,i=this.groups[v];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new l(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=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(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(s.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 o=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.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)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,n=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=e._getType(n),a=o.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,n):(i=s.selected,e._removeItem(s),s=null)),!s){if(!a)throw new TypeError("rangeoverflow"==r?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}':'Unknown item type "'+r+'"');s=new a(n,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},o.prototype._order=function(){s.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options); - -s.extend(n,{height:null}),o=new l(t,i,e),e.groups[t]=o;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("change",{queue:!0})},o.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})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!s.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},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.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)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:r})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=s.getAbsoluteLeft(this.dom.frame),a=t.center.x-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=s.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){i.push(e.id);var s=o._getItemRange(this.itemsData.get(i,this.itemOptions));i=[];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>=s.min&&d<=s.max&&!(a instanceof m)&&i.push(a.id)}}else{var l=i.indexOf(e.id);-1==l?i.push(e.id):i.splice(l,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection()})}}},o._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}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ia&&ea)return n}else if(0===i&&et?-1:1});for(var i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.prepareElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),u={};for(this._getRelevantData(a,u,d,l),this._applySampling(a,u),e=0;ep&&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;ro){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=s)d.push(n[l]);e[t[o]]=d}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0?"left"==r.yAxisOrientation?a=a.concat(n.getData(o)):h=h.concat(n.getData(o)):i[t[s]]=n.getYRange(o,t[s]));c.getStackedYRange(a,i,t,"__barStackLeft","left"),c.getStackedYRange(h,i,t,"__barStackRight","right"),p.getStackedYRange(a,i,t,"__lineStackLeft","left"),p.getStackedYRange(h,i,t,"__lineStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixels=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,this.yAxisRight.amountOfSteps=this.yAxisLeft.amountOfSteps,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],u=0;uy;)y++,l=h.getCurrent(),u=h.isMajor(),p=h.getClassName(),m=f,f=this.body.util.toScreen(l),v=f-m,c&&(c.style.width=v+"px"),this.options.showMinorLabels&&this._repaintMinorText(f,h.getLabelMinor(),t,p),u&&this.options.showMajorLabels?(f>0&&(void 0==g&&(g=f),this._repaintMajorText(f,h.getLabelMajor(),t,p)),c=this._repaintMajorLine(f,t,p)):c=this._repaintMinorLine(f,t,p),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),w=h.getLabelMajor(b),_=w.length*(this.props.majorCharWidth||10)+10;(void 0==g||g>_)&&this._repaintMajorText(0,w,t,p)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",n.style.left=t+"px",n.className="vis-text vis-minor "+o},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",n.style.left=t+"px"},o.prototype._repaintMinorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top=n.majorLabelHeight+"px":o.style.top=this.body.domProps.top.height+"px",o.style.height=n.minorLineHeight+"px",o.style.left=t-n.minorLineWidth/2+"px",o.className="vis-grid vis-vertical vis-minor "+i,o},o.prototype._repaintMajorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top="0":o.style.top=this.body.domProps.top.height+"px",o.style.left=t-n.majorLineWidth/2+"px",o.style.height=n.majorLineHeight+"px",o.className="vis-grid vis-vertical vis-major "+i,o},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure", -this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:j,clickToUse:!1},A.extend(this.options,this.defaultOptions),this.body={nodes:{},nodeIndices:[],edges:{},edgeIndices:[],data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},container:t,view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new R(function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new r["default"],this.canvas=new y["default"](this.body),this.selectionHandler=new M["default"](this.body,this.canvas),this.interactionHandler=new x["default"](this.body,this.canvas,this.selectionHandler),this.view=new w["default"](this.body,this.canvas),this.renderer=new v["default"](this.body,this.canvas),this.physics=new c["default"](this.body),this.layoutEngine=new D["default"](this.body),this.clustering=new f["default"](this.body),this.manipulation=new C["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new h["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new l["default"](this.body,this.images,this.groups),this.canvas._create(),this.configurator=new S["default"](this,this.body.container,N.configureOptions,this.canvas.pixelRatio),this.setOptions(i),this.setData(e)}var s=i(53),r=o(s),a=i(54),h=o(a),d=i(55),l=o(d),u=i(56),c=o(u),p=i(57),f=o(p),m=i(58),v=o(m),g=i(59),y=o(g),b=i(60),w=o(b),_=i(61),x=o(_),k=i(62),M=o(k),O=i(63),D=o(O),T=i(64),C=o(T),E=i(44),S=o(E),P=i(45),I=o(P),N=i(65);i(66);var z=i(69),A=(i(41),i(1)),L=(i(3),i(4),i(38)),B=i(39),R=i(37),F=i(67),j=i(68);z(n.prototype),n.prototype.setOptions=function(t){if(void 0!==t){var e=I["default"].validate(t,N.allOptions);e===!0&&console.log("%cErrors have been found in the supplied options object.",P.printStyle);var i=["locale","locales","clickToUse"];if(A.selectiveDeepExtend(i,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),this.configurator.setOptions(t.configure),this.configurator.options.enabled===!0){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};A.deepExtend(o.nodes,this.nodesHandler.options),A.deepExtend(o.edges,this.edgesHandler.options),A.deepExtend(o.layout,this.layoutEngine.options),A.deepExtend(o.interaction,this.selectionHandler.options),A.deepExtend(o.interaction,this.renderer.options),A.deepExtend(o.interaction,this.interactionHandler.options),A.deepExtend(o.manipulation,this.manipulation.options),A.deepExtend(o.physics,this.physics.options),A.deepExtend(o.global,this.canvas.options),A.deepExtend(o.global,this.options),this.configurator.setModuleOptions(o)}void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new F(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(o)},n.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t._updateVisibleIndices(),t.physics.updatePhysicsData(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation")})},n.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=L.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=B.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images,delete this.body.emitter.emit,delete this.body.emitter.on,delete this.body.emitter.off,delete this.body.emitter.once,delete this.body.emitter;for(var t in this.body.nodes)delete this.body.nodes[t];for(var e in this.body.edges)delete this.body.edges[e];A.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){return this.canvas.setSize.DOMtoCanvas(this.canvas,arguments)},n.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){return this.manipulation.editNodeMode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},n.prototype.getEdges=function(){return this.nodesHandler.getEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){return this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments)},n.prototype.getEdgeAt=function(){return this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments)},n.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){return this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments)},n.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},n.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},n.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},t.exports=n},function(t,e,i){function o(t){this.images={},this.imageBroken={},this.callback=t}o.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var o=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)),o.callback&&(o.images[t]=i,o.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,o.callback&&o.callback(this)):o.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,o.callback&&o.callback(this)):(console.error("Could not load image:",t),this.src=e,o.imageBroken[t]=!0)},i.src=t}return i},t.exports=o},function(t,e,i){function o(t){return I=t,f()}function n(){N=0,z=I.charAt(0)}function s(){N++,z=I.charAt(N)}function r(){return I.charAt(N+1)}function a(t){return B.test(t)}function h(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function d(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=h(n.attr,t.node))),i=s.length-1;i>=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(L=S.NULL,A="";" "===z||" "===z||"\n"===z||"\r"===z;)s();do{var t=!1;if("#"===z){for(var e=N-1;" "===I.charAt(e)||" "===I.charAt(e);)e--;if("\n"===I.charAt(e)||""===I.charAt(e)){for(;""!=z&&"\n"!=z;)s();t=!0}}if("/"===z&&"/"===r()){for(;""!=z&&"\n"!=z;)s();t=!0}if("/"===z&&"*"===r()){for(;""!=z;){if("*"===z&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===z||" "===z||"\n"===z||"\r"===z;)s()}while(t);if(""===z)return void(L=S.DELIMITER);var i=z+r();if(P[i])return L=S.DELIMITER,A=i,s(),void s();if(P[z])return L=S.DELIMITER,A=z,void s();if(a(z)||"-"===z){for(A+=z,s();a(z);)A+=z,s();return"false"===A?A=!1:"true"===A?A=!0:isNaN(Number(A))||(A=Number(A)),void(L=S.IDENTIFIER)}if('"'===z){for(s();""!=z&&('"'!=z||'"'===z&&'"'===r());)A+=z,'"'===z&&s(),s();if('"'!=z)throw x('End of string " expected');return s(),void(L=S.IDENTIFIER)}for(L=S.UNKNOWN;""!=z;)A+=z,s();throw new SyntaxError('Syntax error in part "'+k(A,30)+'"')}function f(){var t={};if(n(),p(),"strict"===A&&(t.strict=!0,p()),("graph"===A||"digraph"===A)&&(t.type=A,p()),L===S.IDENTIFIER&&(t.id=A,p()),"{"!=A)throw x("Angle bracket { expected");if(p(),m(t),"}"!=A)throw x("Angle bracket } expected");if(p(),""!==A)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==A&&"}"!=A;)v(t),";"===A&&p()}function v(t){var e=g(t);if(e)return void w(t,e);var i=y(t);if(!i){if(L!=S.IDENTIFIER)throw x("Identifier expected");var o=A;if(p(),"="===A){if(p(),L!=S.IDENTIFIER)throw x("Identifier expected");t[o]=A,p()}else b(t,o)}}function g(t){var e=null;if("subgraph"===A&&(e={},e.type="subgraph",p(),L===S.IDENTIFIER&&(e.id=A,p())),"{"===A){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=A)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===A?(p(),t.node=_(),"node"):"edge"===A?(p(),t.edge=_(),"edge"):"graph"===A?(p(),t.graph=_(),"graph"):null}function b(t,e){var i={id:e},o=_();o&&(i.attr=o),l(t,i),w(t,e)}function w(t,e){for(;"->"===A||"--"===A;){var i,o=A;p();var n=g(t);if(n)i=n;else{if(L!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=A,l(t,{id:i}),p()}var s=_(),r=c(t,e,i,o,s);u(t,r),e=i}}function _(){for(var t=null;"["===A;){for(p(),t={};""!==A&&"]"!=A;){if(L!=S.IDENTIFIER)throw x("Attribute name expected");var e=A;if(p(),"="!=A)throw x("Equal sign = expected");if(p(),L!=S.IDENTIFIER)throw x("Attribute value expected");var i=A;d(t,e,i),p(),","==A&&p()}if("]"!=A)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(A,30)+'" (char '+N+")")}function k(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 O(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},I="",N=0,z="",A="",L=S.NULL,B=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=T},function(t,e,i){function o(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;an&&(e[o+n++]=u[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;6>p;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;256>c;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){function o(){}var n=i(69),s=i(41),r=i(48),a=i(1),h=(i(3),i(4),i(17),i(32),i(35)),d=i(67),l=i(15),u=i(27);n(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new s(this.dom.root),this.hammer.get("pinch").set({enable:!0}),this.listeners={};var o=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(o.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),r.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),r.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates"];if(a.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"==typeof t.orientation&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new h(this.body);i.setOptions=function(t){var e=t?a.extend({},t):{};e.orientation="top",h.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("hiddenDates"in this.options&&l.convertHiddenOptions(this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new d(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),this.configurator){this.configurator.setOptions(t.configure);var n=a.deepExtend({},this.options);this.components.forEach(function(t){a.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?a.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new u(this.body,{time:i,id:e});return this.customTimes.push(n),this.components.push(n),this.redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(e.start,e.end,i)}},o.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var o=i.valueOf()-e.valueOf();0>=o&&(o=864e5),e=new Date(e.valueOf()-.05*o),i=new Date(i.valueOf()+.05*o)}return{start:e,end:i}},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=a.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,o=this.dom;if(o){l.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(a.addClassName(o.root,"vis-top"),a.removeClassName(o.root,"vis-bottom")):(a.removeClassName(o.root,"vis-top"),a.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=a.option.asSize(e.maxHeight,""),o.root.style.minHeight=a.option.asSize(e.minHeight,""),o.root.style.width=a.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var r=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+r+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=a.option.asSize(e.height,h+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0", -o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"top"!=e.orientation.item&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=c+"px",o.left.style.left="0",o.left.style.top=c+"px",o.right.style.left="0",o.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(o.shadowTop.style.visibility=p,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=p,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=p,o.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t){var m=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTop0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-network-configuration button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-network-configuration button hover"},e.onmouseout=function(){e.className="vis-network-configuration button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-network-configuration vis-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push(),this.colorPicker.insertTo(this.container)}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-network-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;i>n;n++)o[n-1]=arguments[n];this.allowCreation===!0&&!function(){var i=document.createElement("div");i.className="vis-network-configuration item s"+t.length,o.forEach(function(t){i.appendChild(t)}),e.domElements.push(i)}()}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-network-configuration header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-network-configuration label s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-network-configuration select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s.1*e&&(a.min=e/10),2*e>s&&1!==s&&(a.max=2*e),a.value=e):a.value=o;var h=document.createElement("input");h.className="vis-network-configuration rangeinput",h.value=a.value;var d=this;a.onchange=function(){h.value=this.value,d._update(Number(this.value),i)},a.oninput=function(){h.value=this.value};var l=this._makeLabel(i[i.length-1],i);this._makeItem(i,l,a,h)}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-network-configuration checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-network-configuration text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-network-configuration colorBlock",s.style.backgroundColor=e):s.className="vis-network-configuration colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this,n=e.getBoundingClientRect(),s=document.body.getBoundingClientRect(),r=n.left+n.width+5,a=n.top-s.top+.5*n.height;this.colorPicker.show(r,a),this.colorPicker.setColor(t),this.colorPicker.setCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)})}},{key:"_handleObject",value:function(t){var e=void 0===arguments[1]?[]:arguments[1],i=void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],d=h.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(d);if(a instanceof Array)this._handleArray(a,l,d);else if("string"==typeof a)this._makeTextInput(a,l,d);else if("boolean"==typeof a)this._makeCheckbox(a,l,d);else if(a instanceof Object){var u=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(u=!1),u===!0)if(void 0!==a.enabled){var c=h.copyAndExtendArray(d,"enabled"),p=this._getValue(c);if(p===!0){var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,p,d)}else{var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;nvar options = "+JSON.stringify(t,null,2)+""}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;is.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),h):n.distance<=d?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),h):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),h),r=!0}},{key:"findInOptions",value:function(e,i,o){var n=void 0===arguments[3]?!1:arguments[3],r=1e9,a="",h=[],d=e.toLowerCase(),l=void 0;for(var u in i){var c=void 0;if(void 0!==i[u].__type__&&n===!0){var p=t.findInOptions(e,i[u],s.copyAndExtendArray(o,u));r>p.distance&&(a=p.closestMatch,h=p.path,r=p.distance,l=p.indexMatch)}else-1!==u.toLowerCase().indexOf(d)&&(l=u),c=t.levenshteinDistance(e,u),r>c&&(a=u,h=s.copyArray(o),r=c)}return{closestMatch:a,path:h,distance:r,indexMatch:l}}},{key:"printLocation",value:function(t,e){for(var i=void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;ns;s++)o+=" ";o+=t[n]+": {\n"}for(var s=0;st[o].y?t[o].y:e,i=i0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o.prototype.draw=function(t,e,i){if(null!=t&&t.length>0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=n.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.interpolation.enabled?o._catmullRom(t,e):o._linear(t),1==e.options.shaded.enabled){var d,l=n.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+" vis-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&&s.draw(t,e,i)}},o._catmullRomUniform=function(t){for(var e,i,o,n,s,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],o=t[l+1],n=d>l+2?t[l+2]:o,s={x:(-e.x+6*i.x+o.x)*h,y:(-e.y+6*i.y+o.y)*h},r={x:(i.x+6*o.x-n.x)*h,y:(i.y+6*o.y-n.y)*h},a+="C"+s.x+","+s.y+" "+r.x+","+r.y+" "+o.x+","+o.y+" ";return a},o._catmullRom=function(t,e){var i=e.options.interpolation.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var o,n,s,r,a,h,d,l,u,c,p,f,m,v,g,y,b,w,_,x=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",k=t.length,M=0;k-1>M;M++)o=0==M?t[0]:t[M-1],n=t[M],s=t[M+1],r=k>M+2?t[M+2]:s,d=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),l=Math.sqrt(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2)),u=Math.sqrt(Math.pow(s.x-r.x,2)+Math.pow(s.y-r.y,2)),v=Math.pow(u,i),y=Math.pow(u,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),c=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={x:(-b*o.x+c*n.x+w*s.x)*f,y:(-b*o.y+c*n.y+w*s.y)*f},h={x:(y*n.x+p*s.x-b*r.x)*m,y:(y*n.y+p*s.y-b*r.y)*m},0==a.x&&0==a.y&&(a=n),0==h.x&&0==h.y&&(h=s),x+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+s.x+","+s.y+" ";return x},o._linear=function(t){for(var e="",i=0;it[o].y?t[o].y:e,i=i0&&(r=Math.min(r,Math.abs(c[l-1].x-a))),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved),y=l-(p[a].resolved+1);g0&&(r=Math.min(r,Math.abs(c[y].x-a))),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,d.options.stack===!0?c[l].y0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=nt[o].y?t[o].y:e,i=i0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[i],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i1&&(this.startedStabilization=!1),this.stopSimulation())}},{key:"_emitStabilized",value:function(){var t=this;this.stabilizationIterations>1&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:t.stabilizationIterations}),t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){this.stabilized===!1&&(this.calculateForces(),this.stabilized=this.moveNodes(),this.stabilized===!0?this.revert():this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilizationIterations++)}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(o);for(var n=0;na&&o===!0,t=!0}return t===!0?n>.5*this.options.maxVelocity?!1:o:!0}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.options.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=void 0===arguments[0]?this.options.stabilization.iterations:arguments[0];"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedrawRequests"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_stabilizationBatch",value:function(){for(var t=0;this.stabilized===!1&&t=t&&i.push(n.id)}for(var o=0;o0&&Object.keys(s).length>0&&i.push({nodes:n,edges:s})}}}for(var o=0;oo?r.x:o,n=r.ys?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t){var e=void 0===arguments[1]?!0:arguments[1];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var i=this.body.nodes[t],o=i.containedNodes,n=i.containedEdges;for(var s in o)if(o.hasOwnProperty(s)){var r=this.body.nodes[s];r=o[s],r.x=i.x,r.y=i.y,r.vx=i.vx,r.vy=i.vy,r.options.hidden=!1,r.togglePhysics(!0),delete this.clusteredNodes[s]}for(var a in n)if(n.hasOwnProperty(a)){var d=n[a];if(void 0===this.body.nodes[d.fromId]||void 0===this.body.nodes[d.toId])d.edgeType.cleanup(), -d.disconnect(),delete this.body.edges[a];else if(void 0!==this.clusteredNodes[d.fromId]||void 0!==this.clusteredNodes[d.toId]){var l=void 0,u=void 0,c=this.clusteredNodes[d.fromId]||this.clusteredNodes[d.toId],p=c.clusterId,f=this.body.nodes[p];if(f.containedEdges[a]=d,d.from.options.hidden!==!0&&d.to.options.hidden!==!0){void 0!==this.clusteredNodes[d.fromId]?(l=p,u=d.toId):(l=d.fromId,u=p);var m=this._cloneOptions(d,"edge"),v="clusterEdge:"+h.randomUUID();h.deepExtend(m,f.clusterEdgeProperties),h.deepExtend(m,{from:l,to:u,hidden:!1,physics:!0,id:v});var g=this.body.functions.createEdge(m);this.body.edges[v]=g,this.body.edges[v].connect()}}else d.options.hidden=!1,d.togglePhysics(!0)}for(var y=0;yo;)e.push(this.clusteredNodes[t].node),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t]),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;no&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedrawRequests===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,!1),0):window.requestAnimationFrame(this._redraw.bind(this,!1)))}},{key:"_redraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");(0===this.canvas.frame.canvas.width||0===this.canvas.frame.canvas.height)&&this.canvas.setSize(),void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;e.clearRect(0,0,i,o),e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),this.controlNodesActive===!0&&this._drawControlNodes(e),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l0)for(var r=0;rt.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.top&&(i=t.shape.boundingBox.top),ot.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.top&&(i=t.shape.boundingBox.top),o.5*this.body.nodeIndices.length)return void this.fit(i,!1);t=this._getRange(i.nodes);var a=this.body.nodeIndices.length;e=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);e*=h}else{this.body.emitter.emit("_resizeNodes"),t=this._getRange(i.nodes);var d=1.1*Math.abs(t.maxX-t.minX),l=1.1*Math.abs(t.maxY-t.minY),u=this.canvas.frame.canvas.clientWidth/d,c=this.canvas.frame.canvas.clientHeight/l;e=c>=u?u:c}e>1?e=1:0===e&&(e=1);var p=this._findCenter(t),f={position:p,scale:e,animation:i.animation};this.moveTo(f)}},{key:"focus",value:function(t){var e=void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.body.view.translation),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=s.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return{x:this.body.view.translation.x,y:this.body.view.translation.y}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&t.changedPointers[0].ctrlKey;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.pageX,y:t.pageY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount();h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0):0>h-n&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer),void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e));var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center);this.selectionHandler._generateClickEvent("dragging",t,i);var o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){var t=i.x-e.drag.pointer.x,n=i.y-e.drag.pointer.y;o.forEach(function(i){var o=i.node;i.xFixed===!1&&(o.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(i.x)+t)),i.yFixed===!1&&(o.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(i.y)+n))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.body.emitter.emit("startSimulation")):this.body.emitter.emit("_requestRedraw"),this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}}},{key:"onMouseWheel",value:function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.pageX,y:t.pageY});this.zoom(i,n)}t.preventDefault()}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.pageX,y:t.pageY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hover===!0){var n=this.selectionHandler.getNodeAt(i);void 0===n&&(n=this.selectionHandler.getEdgeAt(i)),this.selectionHandler.hoverObject(n)}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,u=[],c=0;c0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],c=0;c0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return void 0}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return void 0}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value: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}},{key:"_selectionIsEmpty",value: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}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptions(e);if(i===!0)return this.body.emitter.emit("refresh"),s.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptions",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={solver:"hierarchicalRepulsion"},this.optionsBackup.physics={solver:"barnesHut"}):"object"==typeof options.physics?(this.optionsBackup.physics={solver:"barnesHut"},void 0!==options.physics.solver&&(this.optionsBackup.physics={solver:options.physics.solver}),t.physics.solver="hierarchicalRepulsion"):options.physics!==!1&&(this.optionsBackup.physics={solver:"barnesHut"},t.physics.solver="hierarchicalRepulsion");var e="horizontal";("RL"===this.options.hierarchical.direction||"LR"===this.options.hierarchical.direction)&&(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth,dynamic:!0},t.edges.smooth={enabled:t.edges.smooth,dynamic:!1,type:e}):(this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!0},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!1,type:e}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;e0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.nodeSpacing=100;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():("directed"===this.options.hierarchical.sortMethod,0||this._determineLevelsDirected()));var n=this._getDistribution();this._placeNodesByHierarchy(n)}}},{key:"_placeNodesByHierarchy",value:function(t){var e=void 0,i=void 0;this.positionedNodes={};for(var o in t)if(t.hasOwnProperty(o))for(e in t[o].nodes)t[o].nodes.hasOwnProperty(e)&&(i=t[o].nodes[e],"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===i.x&&(i.x=t[o].distance),t[o].distance=i.x+this.nodeSpacing):(void 0===i.y&&(i.y=t[o].distance),t[o].distance=i.y+this.nodeSpacing),this.positionedNodes[e]=!0,this._placeBranchNodes(i.edges,i.id,t,o))}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={amount:0,nodes:{},distance:0}),t[o].amount+=1,t[o].nodes[e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length0&&(i=this._getHubSize(),0!==i);)for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],e.edges.length===i&&this._setLevel(0,e))}},{key:"_setLevel",value:function(t,e){if(void 0===this.hierarchicalLevels[e.id]){var i=void 0;this.hierarchicalLevels[e.id]=t;for(var o=0;oo&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===s.x&&(s.x=Math.max(i[a].distance,r.x)),i[a].distance=s.x+this.nodeSpacing,this.positionedNodes[s.id]=!0):(void 0===s.y&&(s.y=Math.max(i[a].distance,r.y)),i[a].distance=s.y+this.nodeSpacing),this.positionedNodes[s.id]=!0,s.edges.length>1&&this._placeBranchNodes(s.edges,s.id,i,a))}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode&&(t.body.data.edges.remove(e.edges),t.body.data.nodes.remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.remove(i),this.body.data.nodes.remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);return i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e,this.body.functions.createNode(i)}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,dynamic:!1,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y; - -this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0});var o="string",n="boolean",s="number",r="array",a="object",h="dom",d="function",l="undefined",u={configure:{enabled:{"boolean":n},filter:{"boolean":n,string:o,array:r,fn:d},container:{dom:h},showButton:{"boolean":n},__type__:{object:a,"boolean":n,string:o,array:r,fn:d}},edges:{arrows:{to:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},middle:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},from:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},__type__:{string:["from","to","middle"],object:a}},color:{color:{string:o},highlight:{string:o},hover:{string:o},inherit:{string:["from","to","both"],"boolean":n},opacity:{number:s},__type__:{object:a,string:o}},dashes:{"boolean":n,array:r},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:a,string:o}},hidden:{"boolean":n},hoverWidth:{fn:d,number:s},label:{string:o,undef:l},length:{number:s,undef:l},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},selectionWidth:{fn:d,number:s},selfReferenceSize:{number:s},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},smooth:{enabled:{"boolean":n},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW"]},roundness:{number:s},__type__:{object:a,"boolean":n}},title:{string:o,undef:l},width:{number:s},value:{number:s,undef:l},__type__:{object:a}},groups:{useDefaultGroups:{"boolean":n},__any__:"get from nodes, will be overwritten below",__type__:{object:a}},interaction:{dragNodes:{"boolean":n},dragView:{"boolean":n},hideEdgesOnDrag:{"boolean":n},hideNodesOnDrag:{"boolean":n},hover:{"boolean":n},keyboard:{enabled:{"boolean":n},speed:{x:{number:s},y:{number:s},zoom:{number:s},__type__:{object:a}},bindToWindow:{"boolean":n},__type__:{object:a,"boolean":n}},multiselect:{"boolean":n},navigationButtons:{"boolean":n},selectable:{"boolean":n},selectConnectedEdges:{"boolean":n},tooltipDelay:{number:s},zoomView:{"boolean":n},__type__:{object:a}},layout:{randomSeed:{undef:l,number:s},hierarchical:{enabled:{"boolean":n},levelSeparation:{number:s},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:a,"boolean":n}},__type__:{object:a}},manipulation:{enabled:{"boolean":n},initiallyActive:{"boolean":n},addNode:{"boolean":n,fn:d},addEdge:{"boolean":n,fn:d},editNode:{fn:d},editEdge:{"boolean":n,fn:d},deleteNode:{"boolean":n,fn:d},deleteEdge:{"boolean":n,fn:d},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:a,"boolean":n}},nodes:{borderWidth:{number:s},borderWidthSelected:{number:s,undef:l},brokenImage:{string:o,undef:l},color:{border:{string:o},background:{string:o},highlight:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},hover:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},__type__:{object:a,string:o}},fixed:{x:{"boolean":n},y:{"boolean":n},__type__:{object:a,"boolean":n}},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},__type__:{object:a,string:o}},group:{string:o,number:s,undef:l},hidden:{"boolean":n},icon:{face:{string:o},code:{string:o},size:{number:s},color:{string:o},__type__:{object:a}},id:{string:o,number:s},image:{string:o,undef:l},label:{string:o,undef:l},level:{number:s,undef:l},mass:{number:s},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},size:{number:s},title:{string:o,undef:l},value:{number:s,undef:l},x:{number:s},y:{number:s},__type__:{object:a}},physics:{barnesHut:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:a}},forceAtlas2Based:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:a}},repulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},hierarchicalRepulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},maxVelocity:{number:s},minVelocity:{number:s},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{"boolean":n},iterations:{number:s},updateInterval:{number:s},onlyDynamicEdges:{"boolean":n},fit:{"boolean":n},__type__:{object:a,"boolean":n}},timestep:{number:s},__type__:{object:a,"boolean":n}},autoResize:{"boolean":n},clickToUse:{"boolean":n},locale:{string:o},locales:{__any__:{object:a},__type__:{object:a}},height:{string:o},width:{string:o},__type__:{object:a}};u.groups.__any__=u.nodes,u.manipulation.controlNodeStyle=u.nodes;var c={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]},global:{locale:["en","nl"]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,u=e+r,c=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,c+h,u,c,u),this.bezierCurveTo(c-h,u,t,p+d,t,p),this.bezierCurveTo(t,p-d,c-h,e,c,e),this.bezierCurveTo(c+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,c+h,m,c,m),this.bezierCurveTo(c-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),u=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,u),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=0>r?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.bodyHammer=a(document&&document.body,{prevent_default:!1}),this.bodyHammer.on("tap",function(i){n(i.target,t)||e.deactivate()}),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(88),r=i(69),a=i(41),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.bodyHammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){function o(t){return t?n(t):void 0}function n(t){for(var e in o.prototype)t[e]=o.prototype[e];return t}t.exports=o,o.prototype.on=o.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},o.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;no;++o)i[o].apply(this,e)}return this},o.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},o.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return Ti.apply(null,arguments)}function i(t){Ti=t}function o(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function n(t){return"[object Array]"===Object.prototype.toString.call(t)}function s(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function r(t,e){var i,o=[];for(i=0;i0)for(i in Ei)o=Ei[i],n=e[o],"undefined"!=typeof n&&(t[o]=n);return t}function p(t){c(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,e.updateOffset(this),Si=!1)}function f(t){return t instanceof p||null!=t&&a(t,"_isAMomentObject")}function m(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function v(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&m(t[o])!==m(e[o]))&&r++;return r+s}function g(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,o,n,s=0;s0;){if(o=w(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&v(n,i,!0)>=e-1)break;e--}s++}return null}function w(e){var i=null;if(!Pi[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Ci._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),_(i)}catch(o){}return Pi[e]}function _(t,e){var i;return t&&(i="undefined"==typeof e?k(t):x(t,e),i&&(Ci=i)),Ci._abbr}function x(t,e){return null!==e?(e.abbr=t,Pi[t]||(Pi[t]=new g),Pi[t].set(e),_(t),Pi[t]):(delete Pi[t],null)}function k(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ci;if(!n(t)){if(e=w(t))return e;t=[t]}return b(t)}function M(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function O(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function D(t){var e,i,o={};for(i in t)a(t,i)&&(e=O(i),e&&(o[e]=t[i]));return o}function T(t,i){return function(o){return null!=o?(E(this,t,o),e.updateOffset(this,i),this):C(this,t)}}function C(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function S(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=O(t),"function"==typeof this[t])return this[t](e);return this}function P(t,e,i){for(var o=""+Math.abs(t),n=t>=0;o.lengthe;e++)Li[o[e]]?o[e]=Li[o[e]]:o[e]=N(o[e]);return function(n){var s="";for(e=0;i>e;e++)s+=o[e]instanceof Function?o[e].call(n,t):o[e];return s}}function A(t,e){return t.isValid()?(e=L(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function L(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(zi.lastIndex=0;o>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,o-=1;return t}function B(t,e,i){Ji[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ji,t)?Ji[t](e._strict,e._locale):new RegExp(F(t))}function F(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function j(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=m(t)}),i=0;io;o++){if(n=d([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function q(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),W(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function X(t){return null!=t?(q(this,t),e.updateOffset(this,!0),this):C(this,"Month")}function Z(){return W(this.year(),this.month())}function K(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[to]<0||i[to]>11?to:i[eo]<1||i[eo]>W(i[$i],i[to])?eo:i[io]<0||i[io]>24||24===i[io]&&(0!==i[oo]||0!==i[no]||0!==i[so])?io:i[oo]<0||i[oo]>59?oo:i[no]<0||i[no]>59?no:i[so]<0||i[so]>999?so:-1,t._pf._overflowDayOfYear&&($i>e||e>eo)&&(e=eo),t._pf.overflow=e),t}function J(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function Q(t,e){var i=!0;return h(function(){return i&&(J(t),i=!1),e.apply(this,arguments)},e)}function $(t,e){ho[t]||(J(e),ho[t]=!0)}function tt(t){var e,i,o=t._i,n=lo.exec(o);if(n){for(t._pf.iso=!0,e=0,i=uo.length;i>e;e++)if(uo[e][1].exec(o)){t._f=uo[e][0]+(n[6]||" ");break}for(e=0,i=co.length;i>e;e++)if(co[e][1].exec(o)){t._f+=co[e][0];break}o.match(Xi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=po.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 1970>t&&a.setFullYear(t),a}function ot(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function nt(t){return st(t)?366:365}function st(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return st(this.year())}function at(t,e,i){var o,n=i-e,s=i-t.day();return s>n&&(s-=7),n-7>s&&(s+=7),o=Dt(t).add(s,"d"),{week:Math.ceil(o.dayOfYear()/7),year:o.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ut(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ct(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function pt(t,e,i,o,n){var s,r,a=ot(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:n,s=n-a+(a>o?7:0)-(n>a?7:0),r=7*(e-1)+(i-n)+s+1,{year:r>0?t:t-1,dayOfYear:r>0?r:nt(t-1)+r}}function ft(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mt(t,e,i){return null!=t?t:null!=e?e:i}function vt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function gt(t){var e,i,o,n,s=[];if(!t._d){for(o=vt(t),t._w&&null==t._a[eo]&&null==t._a[to]&&yt(t),t._dayOfYear&&(n=mt(t._a[$i],o[$i]),t._dayOfYear>nt(n)&&(t._pf._overflowDayOfYear=!0),i=ot(n,0,t._dayOfYear),t._a[to]=i.getUTCMonth(),t._a[eo]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[io]&&0===t._a[oo]&&0===t._a[no]&&0===t._a[so]&&(t._nextDay=!0,t._a[io]=0),t._d=(t._useUTC?ot:it).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[io]=24)}}function yt(t){var e,i,o,n,s,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=mt(e.GG,t._a[$i],at(Dt(),1,4).year),o=mt(e.W,1),n=mt(e.E,1)):(s=t._locale._week.dow,r=t._locale._week.doy,i=mt(e.gg,t._a[$i],at(Dt(),s,r).year),o=mt(e.w,1),null!=e.d?(n=e.d,s>n&&++o):n=null!=e.e?e.e+s:s),a=pt(i,o,n,r,s),t._a[$i]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=L(t._f,t._locale).match(Ni)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Li[s]?(o?t._pf.empty=!1:t._pf.unusedTokens.push(s),Y(s,o,t)):t._strict&&!o&&t._pf.unusedTokens.push(s);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[io]<=12&&(t._pf.bigHour=void 0),t._a[io]=wt(t._locale,t._a[io],t._meridiem),gt(t),K(t)}function wt(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function _t(t){var e,i,n,s,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(s=0;sr)&&(n=r,i=e));h(t,i||e)}function xt(t){if(!t._d){var e=D(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],gt(t)}}function kt(t){var e,i=t._i,o=t._f;return t._locale=t._locale||k(t._l),null===i||void 0===o&&""===i?u({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),f(i)?new p(K(i)):(n(o)?_t(t):o?bt(t):Mt(t),e=new p(K(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Mt(t){var i=t._i;void 0===i?t._d=new Date:s(i)?t._d=new Date(+i):"string"==typeof i?et(t):n(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),gt(t)):"object"==typeof i?xt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Ot(t,e,i,n,s){var r={};return"boolean"==typeof i&&(n=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=s,r._l=i,r._i=t,r._f=e,r._strict=n,r._pf=o(),kt(r)}function Dt(t,e,i,o){return Ot(t,e,i,o,!1)}function Tt(t,e){var i,o;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return Dt();for(i=e[0],o=1;ot&&(t=-t,i="-"),i+P(~~(t/60),2)+e+P(~~t%60,2)})}function Nt(t){var e=(t||"").match(Xi)||[],i=e[e.length-1]||[],o=(i+"").match(yo)||["-",0,0],n=+(60*o[1])+m(o[2]);return"+"===o[0]?n:-n}function zt(t,i){var o,n;return i._isUTC?(o=i.clone(),n=(f(t)||s(t)?+t:+Dt(t))-+o,o._d.setTime(+o._d+n),e.updateOffset(o,!1),o):Dt(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Lt(t,i){var o,n=this._offset||0;return null!=t?("string"==typeof t&&(t=Nt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=At(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?Qt(this,qt(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:At(this)}function Bt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ft(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function jt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Nt(this._i)),this}function Ht(t){return t=t?Dt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Yt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if(this._a){var t=this._isUTC?d(this._a):Dt(this._a);return this.isValid()&&v(this._a,t.toArray())>0}return!1}function Gt(){return!this._isUTC}function Ut(){return this._isUTC; - -}function Vt(){return this._isUTC&&0===this._offset}function qt(t,e){var i,o,n,s=t,r=null;return Pt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(r=bo.exec(t))?(i="-"===r[1]?-1:1,s={y:0,d:m(r[eo])*i,h:m(r[io])*i,m:m(r[oo])*i,s:m(r[no])*i,ms:m(r[so])*i}):(r=wo.exec(t))?(i="-"===r[1]?-1:1,s={y:Xt(r[2],i),M:Xt(r[3],i),d:Xt(r[4],i),h:Xt(r[5],i),m:Xt(r[6],i),s:Xt(r[7],i),w:Xt(r[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Kt(Dt(s.from),Dt(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new St(s),Pt(t)&&a(t,"_locale")&&(o._locale=t._locale),o}function Xt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Kt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Jt(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||($(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=qt(i,o),Qt(this,n,t),this}}function Qt(t,i,o,n){var s=i._milliseconds,r=i._days,a=i._months;n=null==n?!0:n,s&&t._d.setTime(+t._d+s*o),r&&E(t,"Date",C(t,"Date")+r*o),a&&q(t,C(t,"Month")+a*o),n&&e.updateOffset(t,r||a)}function $t(t){var e=t||Dt(),i=zt(e,this).startOf("day"),o=this.diff(i,"days",!0),n=-6>o?"sameElse":-1>o?"lastWeek":0>o?"lastDay":1>o?"sameDay":2>o?"nextDay":7>o?"nextWeek":"sameElse";return this.format(this.localeData().calendar(n,this,Dt(e)))}function te(){return new p(this)}function ee(t,e){var i;return e=O("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Dt(t),+this>+t):(i=f(t)?+t:+Dt(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=O("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Dt(t),+t>+this):(i=f(t)?+t:+Dt(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var o,n,s=zt(t,this),r=6e4*(s.utcOffset()-this.utcOffset());return e=O(e),"year"===e||"month"===e||"quarter"===e?(n=ae(this,s),"quarter"===e?n/=3:"year"===e&&(n/=12)):(o=this-s,n="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),i?n:se(n)}function ae(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Dt([2e3,1]).day(e),o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(o.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Le(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Pe(t,this.localeData()),this.add(t-e,"d")):e}function Be(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Fe(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function je(t,e){return e._meridiemParse}function He(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ye(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function We(t){I(0,[t,3],0,"millisecond")}function Ge(){return this._isUTC?"UTC":""}function Ue(){return this._isUTC?"Coordinated Universal Time":""}function Ve(t){return Dt(1e3*t)}function qe(){return Dt.apply(null,arguments).parseZone()}function Xe(t,e,i){var o=this._calendar[t];return"function"==typeof o?o.call(e,i):o}function Ze(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}function Ke(){return this._invalidDate}function Je(t){return this._ordinal.replace("%d",t)}function Qe(t){return t}function $e(t,e,i,o){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,o):n.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(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)}function ii(t,e,i,o){var n=k(),s=d().set(o,e);return n[i](s,t)}function oi(t,e,i,o,n){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,n);var s,r=[];for(s=0;o>s;s++)r[s]=ii(t,s,i,n);return r}function ni(t,e){return oi(t,e,"months",12,"month")}function si(t,e){return oi(t,e,"monthsShort",12,"month")}function ri(t,e){return oi(t,e,"weekdays",7,"day")}function ai(t,e){return oi(t,e,"weekdaysShort",7,"day")}function hi(t,e){return oi(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Yo(this._milliseconds),this._days=Yo(this._days),this._months=Yo(this._months),t.milliseconds=Yo(t.milliseconds),t.seconds=Yo(t.seconds),t.minutes=Yo(t.minutes),t.hours=Yo(t.hours),t.months=Yo(t.months),t.years=Yo(t.years),this}function li(t,e,i,o){var n=qt(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function ui(t,e){return li(this,t,e,1)}function ci(t,e){return li(this,t,e,-1)}function pi(){var t,e,i,o=this._milliseconds,n=this._days,s=this._months,r=this._data,a=0;return r.milliseconds=o%1e3,t=se(o/1e3),r.seconds=t%60,e=se(t/60),r.minutes=e%60,i=se(e/60),r.hours=i%24,n+=se(i/24),a=se(fi(n)),n-=se(mi(a)),s+=se(n/30),n%=30,a+=se(s/12),s%=12,r.days=n,r.months=s,r.years=a,this}function fi(t){return 400*t/146097}function mi(t){return 146097*t/400}function vi(t){var e,i,o=this._milliseconds;if(t=O(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+12*fi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(mi(this._months/12)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 24*e*60+o/6e4;case"second":return 24*e*60*60+o/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+o;default:throw new Error("Unknown unit "+t)}}function gi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*m(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=O(t),this[t+"s"]()}function wi(t){return function(){return this._data[t]}}function _i(){return se(this.days()/7)}function xi(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function ki(t,e,i){var o=qt(t).abs(),n=sn(o.as("s")),s=sn(o.as("m")),r=sn(o.as("h")),a=sn(o.as("d")),h=sn(o.as("M")),d=sn(o.as("y")),l=n0,l[4]=i,xi.apply(null,l)}function Mi(t,e){return void 0===rn[t]?!1:void 0===e?rn[t]:(rn[t]=e,!0)}function Oi(t){var e=this.localeData(),i=ki(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Di(){var t=an(this.years()),e=an(this.months()),i=an(this.days()),o=an(this.hours()),n=an(this.minutes()),s=an(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(o||n||s?"T":"")+(o?o+"H":"")+(n?n+"M":"")+(s?s+"S":""):"P0D"}var Ti,Ci,Ei=e.momentProperties=[],Si=!1,Pi={},Ii={},Ni=/(\[[^\[]*\])|(\\)?(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,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Li={},Bi=/\d/,Ri=/\d\d/,Fi=/\d{3}/,ji=/\d{4}/,Hi=/[+-]?\d{6}/,Yi=/\d\d?/,Wi=/\d{1,3}/,Gi=/\d{1,4}/,Ui=/[+-]?\d{1,6}/,Vi=/\d+/,qi=/[+-]?\d+/,Xi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Ki=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ji={},Qi={},$i=0,to=1,eo=2,io=3,oo=4,no=5,so=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),M("month","M"),B("M",Yi),B("MM",Yi,Ri),B("MMM",Ki),B("MMMM",Ki),j(["M","MM"],function(t,e){e[to]=m(t)-1}),j(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[to]=n:i._pf.invalidMonth=t});var ro="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ao="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ho={};e.suppressDeprecationWarnings=!1;var lo=/^\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)?)?$/,uo=[["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}/]],co=[["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/]],po=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=Q("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":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),M("year","y"),B("Y",qi),B("YY",Yi,Ri),B("YYYY",Gi,ji),B("YYYYY",Ui,Hi),B("YYYYYY",Ui,Hi),j(["YYYY","YYYYY","YYYYYY"],$i),j("YY",function(t,i){i[$i]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return m(t)+(m(t)>68?1900:2e3)};var fo=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),M("week","w"),M("isoWeek","W"),B("w",Yi),B("ww",Yi,Ri),B("W",Yi),B("WW",Yi,Ri),H(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=m(t)});var mo={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),M("dayOfYear","DDD"),B("DDD",Wi),B("DDDD",Fi),j(["DDD","DDDD"],function(t,e,i){i._dayOfYear=m(t)}),e.ISO_8601=function(){};var vo=Q("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return this>t?this:t}),go=Q("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),B("Z",Xi),B("ZZ",Xi),j(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Nt(t)});var yo=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var bo=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,wo=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;qt.fn=St.prototype;var _o=Jt(1,"add"),xo=Jt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ko=Q("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Me("gggg","weekYear"),Me("ggggg","weekYear"),Me("GGGG","isoWeekYear"),Me("GGGGG","isoWeekYear"),M("weekYear","gg"),M("isoWeekYear","GG"),B("G",qi),B("g",qi),B("GG",Yi,Ri),B("gg",Yi,Ri),B("GGGG",Gi,ji),B("gggg",Gi,ji),B("GGGGG",Ui,Hi),B("ggggg",Ui,Hi),H(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=m(t)}),H(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),M("quarter","Q"),B("Q",Bi),j("Q",function(t,e){e[to]=3*(m(t)-1)}),I("D",["DD",2],"Do","date"),M("date","D"),B("D",Yi),B("DD",Yi,Ri),B("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),j(["D","DD"],eo),j("Do",function(t,e){e[eo]=m(t.match(Yi)[0],10)});var Mo=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),M("day","d"),M("weekday","e"),M("isoWeekday","E"),B("d",Yi),B("e",Yi),B("E",Yi),B("dd",Ki),B("ddd",Ki),B("dddd",Ki),H(["dd","ddd","dddd"],function(t,e,i){var o=i._locale.weekdaysParse(t);null!=o?e.d=o:i._pf.invalidWeekday=t}),H(["d","e","E"],function(t,e,i,o){e[o]=m(t)});var Oo="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Do="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),To="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),Fe("a",!0),Fe("A",!1),M("hour","h"),B("a",je),B("A",je),B("H",Yi),B("h",Yi),B("HH",Yi,Ri),B("hh",Yi,Ri),j(["H","HH"],io),j(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),j(["h","hh"],function(t,e,i){e[io]=m(t),i._pf.bigHour=!0});var Co=/[ap]\.?m?\.?/i,Eo=T("Hours",!0);I("m",["mm",2],0,"minute"),M("minute","m"),B("m",Yi),B("mm",Yi,Ri),j(["m","mm"],oo);var So=T("Minutes",!1);I("s",["ss",2],0,"second"),M("second","s"),B("s",Yi),B("ss",Yi,Ri),j(["s","ss"],no);var Po=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),We("SSS"),We("SSSS"),M("millisecond","ms"),B("S",Wi,Bi),B("SS",Wi,Ri),B("SSS",Wi,Fi),B("SSSS",Vi),j(["S","SS","SSS","SSSS"],function(t,e){e[so]=m(1e3*("0."+t))});var Io=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var No=p.prototype;No.add=_o,No.calendar=$t,No.clone=te,No.diff=re,No.endOf=ve,No.format=le,No.from=ue,No.fromNow=ce,No.get=S,No.invalidAt=ke,No.isAfter=ee,No.isBefore=ie,No.isBetween=oe,No.isSame=ne,No.isValid=_e,No.lang=ko,No.locale=pe,No.localeData=fe,No.max=go,No.min=vo,No.parsingFlags=xe,No.set=S,No.startOf=me,No.subtract=xo,No.toArray=we,No.toDate=be,No.toISOString=de,No.toJSON=de,No.toString=he,No.unix=ye,No.valueOf=ge,No.year=fo,No.isLeapYear=rt,No.weekYear=De,No.isoWeekYear=Te,No.quarter=No.quarters=Se,No.month=X,No.daysInMonth=Z,No.week=No.weeks=ut,No.isoWeek=No.isoWeeks=ct,No.weeksInYear=Ee,No.isoWeeksInYear=Ce,No.date=Mo,No.day=No.days=Le,No.weekday=Be,No.isoWeekday=Re,No.dayOfYear=ft,No.hour=No.hours=Eo,No.minute=No.minutes=So,No.second=No.seconds=Po,No.millisecond=No.milliseconds=Io,No.utcOffset=Lt,No.utc=Rt,No.local=Ft,No.parseZone=jt,No.hasAlignedHourOffset=Ht,No.isDST=Yt,No.isDSTShifted=Wt,No.isLocal=Gt,No.isUtcOffset=Ut,No.isUtc=Vt,No.isUTC=Vt,No.zoneAbbr=Ge,No.zoneName=Ue,No.dates=Q("dates accessor is deprecated. Use date instead.",Mo),No.months=Q("months accessor is deprecated. Use month instead",X),No.years=Q("years accessor is deprecated. Use year instead",fo),No.zone=Q("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Bt);var zo=No,Ao={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Lo={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"},Bo="Invalid date",Ro="%d",Fo=/\d{1,2}/,jo={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"},Ho=g.prototype;Ho._calendar=Ao,Ho.calendar=Xe,Ho._longDateFormat=Lo,Ho.longDateFormat=Ze,Ho._invalidDate=Bo,Ho.invalidDate=Ke,Ho._ordinal=Ro,Ho.ordinal=Je,Ho._ordinalParse=Fo,Ho.preparse=Qe,Ho.postformat=Qe,Ho._relativeTime=jo,Ho.relativeTime=$e,Ho.pastFuture=ti,Ho.set=ei,Ho.months=G,Ho._months=ro,Ho.monthsShort=U,Ho._monthsShort=ao,Ho.monthsParse=V,Ho.week=ht,Ho._week=mo,Ho.firstDayOfYear=lt,Ho.firstDayOfWeek=dt,Ho.weekdays=Ie,Ho._weekdays=Oo,Ho.weekdaysMin=ze,Ho._weekdaysMin=To,Ho.weekdaysShort=Ne,Ho._weekdaysShort=Do,Ho.weekdaysParse=Ae,Ho.isPM=He,Ho._meridiemParse=Co,Ho.meridiem=Ye,_("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===m(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=Q("moment.lang is deprecated. Use moment.locale instead.",_),e.langData=Q("moment.langData is deprecated. Use moment.localeData instead.",k);var Yo=Math.abs,Wo=yi("ms"),Go=yi("s"),Uo=yi("m"),Vo=yi("h"),qo=yi("d"),Xo=yi("w"),Zo=yi("M"),Ko=yi("y"),Jo=wi("milliseconds"),Qo=wi("seconds"),$o=wi("minutes"),tn=wi("hours"),en=wi("days"),on=wi("months"),nn=wi("years"),sn=Math.round,rn={s:45,m:45,h:22,d:26,M:11},an=Math.abs,hn=St.prototype;hn.abs=di,hn.add=ui,hn.subtract=ci,hn.as=vi,hn.asMilliseconds=Wo,hn.asSeconds=Go,hn.asMinutes=Uo,hn.asHours=Vo,hn.asDays=qo,hn.asWeeks=Xo,hn.asMonths=Zo,hn.asYears=Ko,hn.valueOf=gi,hn._bubble=pi,hn.get=bi,hn.milliseconds=Jo,hn.seconds=Qo,hn.minutes=$o,hn.hours=tn,hn.days=en,hn.weeks=_i,hn.months=on,hn.years=nn,hn.humanize=Oi,hn.toISOString=Di,hn.toString=Di,hn.toJSON=Di,hn.locale=pe,hn.localeData=fe,hn.toIsoString=Q("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Di),hn.lang=ko,I("X",0,0,"unix"),I("x",0,0,"valueOf"),B("x",qi),B("X",Zi),j("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),j("x",function(t,e,i){i._d=new Date(m(t))}),e.version="2.10.2",i(Dt),e.fn=zo,e.min=Ct,e.max=Et,e.utc=d,e.unix=Ve,e.months=ni,e.isDate=s,e.locale=_,e.invalid=u,e.duration=qt,e.isMoment=f,e.weekdays=ri,e.parseZone=qe,e.localeData=k,e.isDuration=Pt,e.monthsShort=si,e.weekdaysMin=hi,e.defineLocale=x,e.weekdaysShort=ai,e.normalizeUnits=O,e.relativeTimeThreshold=Mi;var dn=e;return dn})}).call(e,i(107)(t))},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null,e=!1;return function i(o,n){function s(t){return t.match(/[^ ]+/g)}function r(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0},e.firstTarget=t;for(var o=t;o&&!i;){var n=o.hammer&&o.hammer._handlers[e.type];if(n)for(var s=0;s0?o._handlers[t]=i:(o._off(t,r),delete o._handlers[t]))}),o},o.emit=function(i,n){e||(t=n.target),o._emit(i,n)},o.destroy=function(){var t=o.element;delete t.hammer,o._handlers={},o._destroy()},o}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(f(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o-1}function _(t){return t.trim().split(/\s+/g)}function x(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=z(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=A(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=F(a,h),e.distance=R(a,h),I(i,e),e.offsetDirection=B(e.deltaX,e.deltaY),e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,N(i,e);var d=t.element;b(e.srcEvent.target,d)&&(d=e.srcEvent.target),e.target=d}function I(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};(e.eventType===Ct||s.eventType===St)&&(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function N(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Pt&&(h>Tt||r.velocity===a)){var d=r.deltaX-e.deltaX,l=r.deltaY-e.deltaY,u=L(h,d,l);o=u.x,n=u.y,i=vt(u.x)>vt(u.y)?u.x:u.y,s=B(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function z(t){for(var e=[],i=0;in;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function L(t,e,i){return{x:e/t||0,y:i/t||0}}function B(t,e){return t===e?It:vt(t)>=vt(e)?t>0?Nt:zt:e>0?At:Lt}function R(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function F(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return F(e[1],e[0],Ht)-F(t[1],t[0],Ht)}function H(t,e){return R(e[0],e[1],Ht)/R(t[0],t[1],Ht)}function Y(){this.evEl=Wt,this.evWin=Gt,this.allow=!0,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=qt,this.evWin=Xt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function G(){this.evTarget=Kt,this.evWin=Jt,this.started=!1,C.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(St|Pt)&&(i=M(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=$t,this.targetIds={},C.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(Ct|Et)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return b(t.target,h)}),e===Ct)for(n=0;na&&(e.push(t),a=e.length-1):n&(St|Pt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Zt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},Kt="touchstart",Jt="touchstart touchmove touchend touchcancel";p(G,C,{handler:function(t){var e=Zt[t.type];if(e===Ct&&(this.started=!0),this.started){var i=U.call(this,t,e);e&(St|Pt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}});var Qt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},$t="touchstart touchmove touchend touchcancel";p(V,C,{handler:function(t){var e=Qt[t.type],i=q.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}),p(X,C,{handler:function(t,e,i){var o=i.pointerType==kt,n=i.pointerType==Ot;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(St|Pt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var te=O(pt.style,"touchAction"),ee=te!==a,ie="compute",oe="auto",ne="manipulation",se="none",re="pan-x",ae="pan-y";Z.prototype={set:function(t){t==ie&&(t=this.compute()),ee&&(this.manager.element.style[te]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),K(t.join(" "))},preventDefaults:function(t){if(!ee){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=w(o,se),s=w(o,ae),r=w(o,re);return n||s&&i&Bt||r&&i&Rt?this.preventSrc(e):void 0}},preventSrc:function(t){ -this.manager.session.prevented=!0,t.preventDefault()}};var he=1,de=2,le=4,ue=8,ce=ue,pe=16,fe=32;J.prototype={defaults:{},set:function(t){return u(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=tt(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=tt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=tt(t,this),-1===x(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=tt(t,this);var e=x(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(i.options.event+(e?Q(o):""),t)}var i=this,o=this.state;ue>o&&e(!0),e(),o>=ue&&e(!0)},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=fe)},canEmit:function(){for(var t=0;ts?Nt:zt,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?At:Lt,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return et.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this._super.emit.call(this,t)}}),p(ot,et,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(this._super.emit.call(this,t),1!==t.scale){var e=t.scale<1?"in":"out";this.manager.emit(this.options.event+e,t)}}}),p(nt,J,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(St|Pt)&&!n)this.reset();else if(t.eventType&Ct)this.reset(),this._timer=h(function(){this.state=ce,this.tryEmit()},e.time,this);else if(t.eventType&St)return ce;return fe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===ce&&(t&&t.eventType&St?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),p(st,et,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),p(rt,et,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Bt|Rt,pointers:1},getTouchAction:function(){return it.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Bt|Rt)?e=t.velocity:i&Bt?e=t.velocityX:i&Rt&&(e=t.velocityY),this._super.attrTest.call(this,t)&&i&t.direction&&t.distance>this.options.threshold&&vt(e)>this.options.velocity&&t.eventType&St},emit:function(t){var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(at,J,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ne]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances;s++)for(r=0;rp?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["color","font","fixed","shadow"];if(B.selectiveNotDeepExtend(o,t,e,i),B.mergeOptions(t,e,"shadow"),void 0!==e.color&&null!==e.color){var n=B.parseColor(e.color);B.fillIfDefined(t.color,n)}else i===!0&&null===e.color&&(t.color=void 0,delete t.color);void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&a["default"].parseOptions(t.font,e),void 0!==e.scaling&&B.mergeOptions(t.scaling,e.scaling,"label")}}]),t}();e["default"]=R,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i=this.options.scaling.label.maxVisible&&(r=Number(this.options.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=o(d,2),u=l[0],c=l[1],p=this._setAlignment(t,i,h,s),f=o(p,2);i=f[0],h=f[1],t.font=(e?"bold ":"")+r+"px "+this.options.font.face,t.fillStyle=u,t.textAlign="center",this.options.font.strokeWidth>0&&(t.lineWidth=this.options.font.strokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var m=0;m0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if("horizontal"!==this.options.font.align){e=0,i=0;var n=2;"top"===this.options.font.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.options.font.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.options.font.color||"#000000",i=this.options.font.strokeColor||"#ffffff";if(t<=this.options.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.options.scaling.label.drawThreshold-t)));e=r.overrideOpacity(e,o),i=r.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.options.font.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){ -var i=void 0===arguments[2]?0:arguments[2],o=void 0===arguments[3]?0:arguments[3],n=void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.options.font.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.options.font.size,"hanging"===n&&(this.size.top+=.5*this.options.font.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.options.label){o=String(this.options.label).split("\n"),n=o.length,t.font=(e?"bold ":"")+this.options.font.size+"px "+this.options.font.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2]}else"object"==typeof e.font&&r.fillIfDefined(t,e.font,i);t.size=Number(t.size)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;ii.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["id","from","hidden","hoverWidth","label","length","line","opacity","physics","selectionWidth","selfReferenceSize","to","title","value","width"];if(f.selectiveDeepExtend(o,t,e,i),f.mergeOptions(t,e,"smooth"),f.mergeOptions(t,e,"shadow"),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=void 0,delete t.dashes),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label")):i===!0&&null===e.scaling&&(t.scaling=void 0,delete t.scaling),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var n=e.arrows.toLowerCase();-1!=n.indexOf("to")&&(t.arrows.to.enabled=!0),-1!=n.indexOf("middle")&&(t.arrows.middle.enabled=!0),-1!=n.indexOf("from")&&(t.arrows.from.enabled=!0)}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to"),f.mergeOptions(t.arrows,e.arrows,"middle"),f.mergeOptions(t.arrows,e.arrows,"from")}else i===!0&&null===e.arrows&&(t.arrows=void 0,delete t.arrows);if(void 0!==e.color&&null!==e.color)if(f.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var s=!1;void 0!==e.color.color&&(t.color.color=e.color.color,s=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,s=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,s=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&s===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=void 0,delete t.color);void 0!==e.font&&a["default"].parseOptions(t.font,e)}}]),t}();e["default"]=m,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;o>s;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var h=0;o>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=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)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii&&(s=.5*u>i?1:c*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(t,e,i){for(var o=!0;o;){a=d=h=void 0,o=!1;var n=t,s=e,r=i,a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;return void 0===h?void 0:h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return void 0;t=d,e=s,i=r,o=!0}},a=i(74),h=o(a),d=function(t){function e(t,i,o,s,a){n(this,e),r(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o,s,a),this.isCluster=!0,this.containedNodes={},this.containedEdges={}}return s(e,t),e}(h["default"]);e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom}},{key:"configureKeyboardBindings",value:function(){void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",this.bindToRedraw.bind(this,"_moveUp"),"keydown"),this.keycharm.bind("down",this.bindToRedraw.bind(this,"_moveDown"),"keydown"),this.keycharm.bind("left",this.bindToRedraw.bind(this,"_moveLeft"),"keydown"),this.keycharm.bind("right",this.bindToRedraw.bind(this,"_moveRight"),"keydown"),this.keycharm.bind("=",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num+",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("[",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("]",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pageup",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pagedown",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("up",this.unbindFromRedraw.bind(this,"_moveUp"),"keyup"),this.keycharm.bind("down",this.unbindFromRedraw.bind(this,"_moveDown"),"keyup"),this.keycharm.bind("left",this.unbindFromRedraw.bind(this,"_moveLeft"),"keyup"),this.keycharm.bind("right",this.unbindFromRedraw.bind(this,"_moveRight"),"keyup"),this.keycharm.bind("=",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num+",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("[",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("]",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pageup",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pagedown",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup")))}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;io&&(s=o-e-this.padding),sn&&(r=n-i-this.padding),r=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!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;nthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?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*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)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*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.ythis.imageObj.height?(i=this.imageObj.width/this.imageObj.height,t=2*this.options.size*i||this.imageObj.width,e=2*this.options.size||this.imageObj.height):(i=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,t=2*this.options.size||this.imageObj.width,e=2*this.options.size*i||this.imageObj.height),this.width=t,this.height=e,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?a:r,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}},{key:"_drawImageAtPosition",value:function(t){0!=this.imageObj.width&&(t.globalAlpha=1,this.enableShadow(t),t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),this.disableShadow(t))}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.options.label&&(this.labelOffset=s),this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i=l&&h>d;){var m=.5*(l+u);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)r?f===!1?l=m:u=m:f===!1?u=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=void 0,h=void 0;a=r.x,h=r.y;var d=1e9,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=t,v=e;for(u=1;10>u;u++)c=.1*u,p=Math.pow(1-c,2)*t+2*c*(1-c)*a+Math.pow(c,2)*i,f=Math.pow(1-c,2)*e+2*c*(1-c)*h+Math.pow(c,2)*o,u>0&&(l=this._getDistanceToLine(m,v,p,f,n,s),d=d>l?l:d),m=p,v=f;return d}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;io.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),u=this._pointOnCircle(o,n,l,g),c=Math.atan2(t.y-u.y,t.x-u.x),p=t.distanceToBorder(e,c),f=Math.sqrt(Math.pow(u.x-t.x,2)+Math.pow(u.y-t.y,2)),m=p-f,!(Math.abs(m)0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t){var e=this.options.color;if(e.inherit!==!1){if("both"===e.inherit&&this.from.id!==this.to.id){var i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),o=void 0,n=void 0;return o=this.from.options.color.highlight.border,n=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(o=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),n=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?n=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(o=this.from.options.color.border),i.addColorStop(0,o),i.addColorStop(1,n),i}this.colorDirty===!0&&("to"===e.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,e.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,e.opacity)))}else this.colorDirty===!0&&(this.color.highlight=e.highlight,this.color.hover=e.hover,this.color.color=r.overrideOpacity(e.color,e.opacity));return this.colorDirty=!1,this.selected===!0?this.color.highlight:this.hover===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,n,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,n,s,r,a);else{var d=this._getCircleData(),l=o(d,3),u=l[0],c=l[1],p=l[2],f=u-s,m=c-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.lefts&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"drawArrowHead",value:function(t,e,i,n,s){t.strokeStyle=this.getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(n,s);var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0;if("from"===e?(d=this.from,l=this.to,u=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(d=this.to,l=this.from,u=-.1,c=this.options.arrows.to.scaleFactor):(d=this.to,l=this.from,c=this.options.arrows.middle.scaleFactor),d!=l){if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);r=Math.atan2(h.y-p.y,h.x-p.x)}else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.6,i);a=(10+5*this.options.width)*c,t.arrow(h.x,h.y,r,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}else{var f=void 0,m=void 0,v=this._getCircleData(t),g=o(v,3),y=g[0],b=g[1],w=g[2];"from"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),f=-2*m.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),f=-2*m.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(m=this._pointOnCircle(y,b,w,.175),f=3.9269908169872414);var _=(10+5*this.options.width)*c;t.arrow(m.x,m.y,f,_),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a,t.exports=e["default"]}])}); +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(57),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(21),BackgroundItem:i(22),BoxItem:i(20),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={Images:i(37),dotparser:i(38),gephiParser:i(39)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41),e.Hammer=i(41)},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i=t&&i.push(n.id)}for(var o=0;o0&&Object.keys(s).length>0&&i.push({nodes:n,edges:s})}}}for(var o=0;oo?r.x:o,n=r.ys?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t){var e=void 0===arguments[1]?!0:arguments[1];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var i=this.body.nodes[t],o=i.containedNodes,n=i.containedEdges;for(var s in o)if(o.hasOwnProperty(s)){var r=this.body.nodes[s];r=o[s],r.x=i.x,r.y=i.y,r.vx=i.vx,r.vy=i.vy,r.options.hidden=!1,r.togglePhysics(!0),delete this.clusteredNodes[s]}for(var a in n)if(n.hasOwnProperty(a)){var d=n[a];if(void 0===this.body.nodes[d.fromId]||void 0===this.body.nodes[d.toId])d.edgeType.cleanup(),d.disconnect(),delete this.body.edges[a];else if(void 0!==this.clusteredNodes[d.fromId]||void 0!==this.clusteredNodes[d.toId]){var l=void 0,u=void 0,c=this.clusteredNodes[d.fromId]||this.clusteredNodes[d.toId],p=c.clusterId,f=this.body.nodes[p];if(f.containedEdges[a]=d,d.from.options.hidden!==!0&&d.to.options.hidden!==!0){void 0!==this.clusteredNodes[d.fromId]?(l=p,u=d.toId):(l=d.fromId,u=p);var m=this._cloneOptions(d,"edge"),v="clusterEdge:"+h.randomUUID();h.deepExtend(m,f.clusterEdgeProperties),h.deepExtend(m,{from:l,to:u,hidden:!1,physics:!0,id:v});var g=this.body.functions.createEdge(m);this.body.edges[v]=g,this.body.edges[v].connect()}}else d.options.hidden=!1,d.togglePhysics(!0)}for(var y=0;yo;)e.push(this.clusteredNodes[t].node),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t]),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;no&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.options.drawPoints.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.options.drawPoints.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*o.options.drawPoints.size),a.setAttributeNS(null,"width",o.options.drawPoints.size),a.setAttributeNS(null,"height",o.options.drawPoints.size)),void 0!==o.options.drawPoints.styles&&a.setAttributeNS(null,"style",o.group.options.drawPoints.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){0>n&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var o=this._options.type[i];"Date"==o||"ISODate"==o||"ASPDate"==o?this._type[i]="Date":this._type[i]=o}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n=i(57),s=i(5);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=s.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=function(){throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.")},o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=function(){throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.")},o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0;ns;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],n=[],s=this,r=s._fieldId,a=function(t){var e=t[r];s._data[e]?(e=s._updateItem(t),o.push(e),n.push(t)):(e=s._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),o.length&&this._trigger("update",{items:o,data:n},e),i.concat(o)},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,u,c,p=o&&o.type||this._options.type,f=o&&o.filter,m=[];if(void 0!=e)d=s._getItem(e,p),f&&!f(d)&&(d=null);else if(void 0!=i)for(u=0,c=i.length;c>u;u++)d=s._getItem(i[u],p),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=s._getItem(l,p),(!f||f(d))&&m.push(d));if(o&&o.order&&void 0==e&&this._sort(m,o.order),o&&o.fields){var v=o.fields;if(void 0!=e)d=this._filterFields(d,v);else for(u=0,c=m.length;c>u;u++)m[u]=this._filterFields(m[u],v)}if("Object"==a){var g={};for(u=0;ue;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=this._getItem(o,d),a(n)&&l.push(n[this._fieldId]));else if(h){s=[];for(o in r)r.hasOwnProperty(o)&&s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=r[o],l.push(n[this._fieldId]));return l},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n=e&&e.filter,s=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],o=i[this._fieldId],t(i,o);else for(o in r)r.hasOwnProperty(o)&&(i=this._getItem(o,s),(!n||n(i))&&t(i,o))},o.prototype.map=function(t,e){var i,o=e&&e.filter,n=e&&e.type||this._options.type,s=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,n),(!o||o(i))&&s.push(t(i,a)));return e&&e.order&&this._sort(s,e.order),s},o.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var o in t)t.hasOwnProperty(o)&&-1!=e.indexOf(o)&&(i[o]=t[o]);else for(var o in t)t.hasOwnProperty(o)&&e.hasOwnProperty(o)&&(i[e[o]]=t[o]);return i},o.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(n.isNumber(t)||n.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},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||r>o)&&(i=s,o=r)}return i},o.prototype.min=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||o>r)&&(i=s,o=r)}return i},o.prototype.distinct=function(t){var e,i=this._data,o=[],s=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(o[e]==d){l=!0;break}l||void 0===d||(o[r]=d,r++)}if(s)for(e=0;ei;i++)n=e[i],this._ids[n]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},o=[],n=[],s=0;so;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}o.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},o.extend=function(t,e){var i=new o(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;sthis.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)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))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 n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.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 c,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 n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(69),a=i(3),h=i(4),d=i(57),l=i(10),u=i(9),c=i(7),p=i(8),f=i(11),m=i(12);r(o.prototype),o.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!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.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)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;ot[o][e]&&(i.min=t[o][e]),i.maxt;t++){var f=(t-c)/(p-c),v=240*f,g=this._hsv2rgb(v,1,1);u.strokeStyle=g,u.beginPath(),u.moveTo(h,r+t),u.lineTo(a,r+t),u.stroke()}u.strokeStyle=this.colorAxis,u.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(u.strokeStyle=this.colorAxis,u.fillStyle=this.colorDot,u.beginPath(),u.moveTo(h,r),u.lineTo(a,r),u.lineTo(a-i+e,d),u.lineTo(h,d),u.closePath(),u.fill(),u.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new m(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,n=this._convert3Dto2D(new l(_,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(v.lineWidth=1,o=void 0===this.defaultYStep,i=new m(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,n=this._convert3Dto2D(new l(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(v.lineWidth=1,o=void 0===this.defaultZStep,i=new m(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(s,r,i.getCurrent())),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(t.x-b,t.y),v.stroke(),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();v.lineWidth=1,t=this._convert3Dto2D(new l(s,r,this.zMin)),e=this._convert3Dto2D(new l(s,r,this.zMax)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),v.lineWidth=1,c=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),c=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),v.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke();var x=this.xLabel;x.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-u:this.yMax+u,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(k,n.x,n.y));var M=this.zLabel;M.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new l(s,r,a)),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(M,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,u,c,p,f,m=this.frame.canvas,v=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+n.point.z)/4,u=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),c=1,this.showShadow?(p=Math.min(1+k.x/M/2,1),a=this._hsv2rgb(u,c,p),h=a):(p=1,a=this._hsv2rgb(u,c,p),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,v.lineWidth=d,v.fillStyle=a,v.strokeStyle=h,v.beginPath(),v.moveTo(t.screen.x,t.screen.y),v.lineTo(e.screen.x,e.screen.y),v.lineTo(n.screen.x,n.screen.y),v.lineTo(i.screen.x,i.screen.y),v.closePath(),v.fill(),v.stroke()}}else for(s=0;sc&&(c=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],o.lineWidth=1,o.strokeStyle="blue",o.beginPath(),o.moveTo(t.screen.x,t.screen.y)),e=1;e0&&o.stroke()}},o.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=n(t),this.startMouseY=s(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)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=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(o))0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;ib)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=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",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="
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(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(10);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1: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 n=i(4);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(to&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(){this._current=this._start-this._start%this._step},o.prototype.next=function(){this._current+=this._step},o.prototype.end=function(){return this._current>this._end},t.exports=o},function(t,e,i){function o(t,e,i,h){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof s||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var f=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.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 f.timeAxis.step.scale},getStep:function(){return f.timeAxis.step.step},toScreen:f._toScreen.bind(f),toGlobalScreen:f._toGlobalScreen.bind(f),toTime:f._toTime.bind(f),toGlobalTime:f._toGlobalTime.bind(f)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.itemSet=new c(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){f.emit("click",f.getEventProperties(t))}),this.on("doubletap",function(t){f.emit("doubleClick",f.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){f.emit("contextmenu",f.getEventProperties(t))},this.configurator=new p(this,t,g),h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(69),i(41),i(57)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(32),p=i(44),f=i(45)["default"],m=i(45).printStyle,v=i(46).allOptions,g=i(46).configureOptions;o.prototype=new h,o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){var e=f.validate(t,v);if(e===!0&&console.log("%cErrors have been found in the supplied options object.",m),h.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;if(i){var o=this.getSelection();this.setItems(null),this.setItems(i),this.setSelection(o)}}},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(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 o=this._getDataRange();var n=void 0!=this.options.start?this.options.start:o.start,a=void 0!=this.options.end?this.options.end:o.end;this.setWindow(n,a,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},o.prototype.getItemRange=function(){var t=this.itemsData&&this.itemsData.getDataSet(),e=null,i=null;if(t){var o=t.min("start");e=o?n.convert(o.start,"Date").valueOf():null;var s=t.max("start");s&&(i=n.convert(s.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?n.convert(r.end,"Date").valueOf():Math.max(i,n.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this.itemSet.itemFromTarget(t),a=this.itemSet.groupFromTarget(t),h=u.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),c=this.body.util.getStep(),p=this._toTime(o),f=d?d(p,l,c):p,m=n.getTarget(t),v=null;return null!=r?v="item":null!=h?v="custom-time":n.hasParent(m,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&n.hasParent(m,this.timeAxis2.dom.foreground)?v="axis":n.hasParent(m,this.itemSet.dom.labelSet)?v="group-label":n.hasParent(m,this.currentTime.bar)?v="current-time":n.hasParent(m,this.dom.center)&&(v="background"),{event:t,item:r?r.id:null,group:a?a.groupId:null,what:v,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:s,time:p,snappedTime:f}},t.exports=o},function(t,e,i){function o(t,e,i,o){if(!(Array.isArray(i)||i instanceof s)&&i instanceof Object){var r=o;o=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.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.linegraph=new c(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},this.configurator=new p(this,t,g),o&&this.setOptions(o),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(69),i(41),i(57)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(34),p=i(44),f=i(45)["default"],m=i(45).printStyle,v=i(47).allOptions,g=i(47).configureOptions;o.prototype=new h,o.prototype.setOptions=function(t){var e=f.validate(t,v);e===!0&&console.log("%cErrors have been found in the supplied options object.",m),h.prototype.setOptions.call(this,t)},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.linegraph.setGroups(e)},o.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},o.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},o.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 o=0;or?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}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(o),a=u.customTimeFromTarget(t),h=n.getTarget(t),d=null;n.hasParent(h,this.timeAxis.dom.foreground)?d="axis":this.timeAxis2&&n.hasParent(h,this.timeAxis2.dom.foreground)?d="axis":n.hasParent(h,this.linegraph.yAxisLeft.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.yAxisRight.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.legendLeft.dom.frame)?d="legend":n.hasParent(h,this.linegraph.legendRight.dom.frame)?d="legend":null!=a?d="custom-time":n.hasParent(h,this.currentTime.bar)?d="current-time":n.hasParent(h,this.dom.center)&&(d="background");var l=[],c=this.linegraph.yAxisLeft,p=this.linegraph.yAxisRight;return c.hidden||l.push(c.screenToValue(s)),p.hidden||l.push(p.screenToValue(s)),{event:t,what:d,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:s,time:r,value:l}},t.exports=o},function(t,e,i){var o=i(40);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var c=0,p=s.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;p>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 v=e.isHidden(t.range.start,t.hiddenDates),g=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==v.hidden&&(y=1==t.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==t.range.endToFront?g.startDate-1:g.endDate+1),(1==v.hidden||1==g.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&a>n){i=!0;break}}if(1==i&&n=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,n){return n=o(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,n)},e.getHiddenDurationBefore=function(t,e,i){var n=0;i=o(i).toDate().valueOf();for(var s=0;s=e.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(t,e,i,o,n,s,r){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.formattingFunction=s,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=r,this.setRange(t,e,i,o,n)}o.prototype.setRange=function(t,e,i,o,n){this._start=void 0===n.min?t:n.min,this._end=void 0===n.max?e:n.max,this._start===this._end&&(this._start=void 0===n.min?this._start-.75:this._start,this._end=void 0===n.max?this._end+1:this._end),this.autoScale===!0&&this.setMinimumStep(i,o),this.setFirst(n)},o.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,o=1.2*i,n=t*(o/e),s=Math.round(Math.log(o)/Math.LN10),r=-1,a=Math.pow(10,s),h=0;0>s&&(h=s);for(var d=!1,l=h;Math.abs(l)<=Math.abs(s);l++){a=Math.pow(10,l);for(var u=0;u=n){d=!0,r=u;break}}if(d===!0)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},o.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.alignZeros===!0&&(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},o.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},o.prototype.hasNext=function(){return this.current>=this.marginStart},o.prototype.next=function(){var t=this.current;this.current-=this.step,this.current===t&&(this.current=this._end)},o.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},o.prototype.getCurrent=function(){var t=Math.abs(this.current)t)for(var e=0;-t>e;e++)this.previous();else if(t>0)for(var e=0;t>e;e++)this.next()},t.exports=o},function(t,e,i){function o(t,e){var i=a().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.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",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 n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function s(t,e){return{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}}var r=i(57),a=(i(48),i(40)),h=i(25),d=i(15);o.prototype=new h,o.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)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,s=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,l=this.end,u="object"==typeof i&&"duration"in i?i.duration:500,c="object"==typeof i&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",p=r.easingFunctions[c];if(!p)throw new Error("Unknown easing function "+JSON.stringify(c)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var f=(new Date).valueOf(),m=!1,v=function b(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-f,i=p(e/u),r=e>u,c=r||null===n?n:h+(n-h)*i,v=r||null===s?s:l+(s-l)*i;g=a._applyRange(c,v),d.updateHiddenDates(a.body,a.options.hiddenDates),m=m||g,g&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:o}),r?m&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:o}):a.animationTimer=setTimeout(b,20)}};return v()}var g=this._applyRange(n,s);if(d.updateHiddenDates(this.body,this.options.hiddenDates),g){var y={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",y),this.body.emitter.emit("rangechanged",y)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=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(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&nd&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){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"))},o.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*o,h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},o.prototype._onDragEnd=function(t){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}))},o.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 o=s({x:t.clientX,y:t.clientY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=s(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=o-n,a=i-n+(this.props.touch.start-(i-n))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var l=d.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(l!=a||u!=h)&&(this.props.touch.start=l,this.props.touch.end=u,this.scaleOffset=1-t.scale,a=l,h=u),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||l!=a)&&(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e,i){var o=.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,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];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 o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+oe.top}},function(t,e,i){function o(t,e,i,n){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=n,void 0===n&&(this.hiddenDates=[]),this.format=o.FORMAT}var n=i(40),s=i(15),r=i(57);o.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:""}},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.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)},o.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},o.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)}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.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)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=new Date(t.valueOf());if("year"==e){var n=o.getFullYear()+Math.round(o.getMonth()/12);o.setFullYear(Math.round(n/i)*i),o.setMonth(0),o.setDate(0),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("month"==e)o.getDate()>15?(o.setDate(1),o.setMonth(o.getMonth()+1)):o.setDate(1),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.setHours(24*Math.round(o.getHours()/24));break;default:o.setHours(12*Math.round(o.getHours()/12))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.setHours(12*Math.round(o.getHours()/12));break;default:o.setHours(6*Math.round(o.getHours()/6))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:o.setMinutes(60*Math.round(o.getMinutes()/60));break;default:o.setMinutes(30*Math.round(o.getMinutes()/30))}o.setSeconds(0),o.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.setMinutes(5*Math.round(o.getMinutes()/5)),o.setSeconds(0);break;case 5:o.setSeconds(60*Math.round(o.getSeconds()/60));break;default:o.setSeconds(30*Math.round(o.getSeconds()/30))}o.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.setSeconds(5*Math.round(o.getSeconds()/5)),o.setMilliseconds(0);break;case 5:o.setMilliseconds(1e3*Math.round(o.getMilliseconds()/1e3));break;default:o.setMilliseconds(500*Math.round(o.getMilliseconds()/500))}else if("millisecond"==e){var s=i>5?i/2:1;o.setMilliseconds(Math.round(o.getMilliseconds()/s)*s)}return o},o.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}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(n().add(1,"day"),"day")?" vis-tomorrow":t.isSame(n().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function s(t){return t.isSame(new Date,"year")?" vis-current-year":""}var r=n(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+"-h"+(d+4)),"vis-h"+d+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"vis-day"+l+" vis-"+u+o(a)+t(l-1);case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"vis-year"+c+s(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(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);n.call(this,t,e,i)}var n=i(21);i(57);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.start0){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},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].indexr&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(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=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(21);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),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?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e){this.options=null,this.props=null}o.prototype.setOptions=function(t){t&&util.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(57),s=i(25),r=i(40),a=i(49);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={locales:h,locale:"en",id:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(57),r=i(25),a=i(40),h=i(49);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time",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=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this))},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");return o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.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,left:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return t},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=n.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.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(57),s=i(2),r=i(25),a=i(16);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.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","left","right","alignZeros"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.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)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a0&&(t=0),this.range.start=t,this.range.end=e},o.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)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||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=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.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,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var e,i=this.options.orientation;if(this.master===!1){var o,n,r,h;-1!==this.zeroCrossing&&this.options.alignZeros===!0?this.range.end>0?(o=this.range.end/this.zeroCrossing,n=this.range.end-this.amountOfSteps*o,r=this.range.end):(o=-1*this.range.start/(this.amountOfSteps-this.zeroCrossing),n=this.range.start,r=this.range.start+o*this.amountOfSteps):(n=this.range.start,r=this.range.end),h=this.stepPixels}else h=this.props.majorCharHeight,n=this.range.start,r=this.range.end;if(this.step=e=new a(n,r,h,this.dom.frame.offsetHeight,this.options[this.options.orientation].range,this.options[this.options.orientation].format,this.master===!1&&this.options.alignZeros),this.master===!0)this.stepPixels=this.dom.frame.offsetHeight/e.marginRange*e.step,this.amountOfSteps=Math.ceil(this.dom.frame.offsetHeight/this.stepPixels);else if(this.options.alignZeros===!0&&-1!==this.zeroCrossing){var d=(e.current-this.zeroCrossing*e.step)/e.step;this.step.shift(d)}this.valueAtBottom=e.marginEnd,this.maxLabelSize=0;for(var l=0,u=0,c=!1;u0&&u!==this.amountOfSteps&&((this.options.showMinorLabels&&c===!1||this.master===!1&&this.options.showMinorLabels===!0)&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-minor",this.props.minorCharHeight),c&&this.options.showMajorLabels&&this.master===!0||this.options.showMinorLabels===!1&&this.master===!1&&c===!0?(l>=0&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-major",this.props.majorCharHeight),this._redrawLine(l,i,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(l,i,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth)),this.master===!0&&0===e.current&&(this.zeroCrossing=u),e.next(),u+=1;this.master===!0&&0===e.current&&(this.zeroCrossing=u),this.conversionFactor=this.stepPixels/e.step;var p=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(p=this.props.titleCharHeight);var f=this.options.icons===!0?Math.max(this.options.iconWidth,p)+this.options.labelOffsetX+15:p+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-f&&this.options.visible===!0?(this.width=this.maxLabelSize+f,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+f),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),t=!1),t},o.prototype.convertValue=function(t){var e=this.valueAtBottom-t,i=e*this.conversionFactor;return i},o.prototype.screenToValue=function(t){return this.valueAtBottom-t/this.conversionFactor},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,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*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var f=this.visibleItems[c];f.repositionY(e)}return o},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var o=this;if(i.length>0){var s=i[0].top,r=i[0].top+i[0].height;if(n.forEach(i,function(t){s=Math.min(s,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(o.subgroups[t.data.subgroup].height=Math.max(o.subgroups[t.data.subgroup].height,t.height),o.subgroups[t.data.subgroup].visible=!0)}),s>t.axis){var a=s-t.axis;r-=a,n.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,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)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(s=0;sl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;sl})}for(s=0;s=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;rn;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrder:null,selectable:!0,multiselect:!1,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}},this.options=s.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,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(57),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),u=i(31),c=i(20),p=i(23),f=i(24),m=i(22),v="__ungrouped__",g="__background__";o.prototype=new d,o.types={background:m,box:c,range:f,point:p},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var s=document.createElement("div");s.className="vis-labelset",this.dom.labelSet=s,this._updateUngrouped();var r=new u(g,null,this);r.show(),this.groups[g]=r,this.hammer=new n(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","align","order","stack","selectable","multiselect","groupOrder","dataAttributes","template","hide","snap"];s.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"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&&(s.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&&s.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&&s.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()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&s.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.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)},o.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)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;ae&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=s.option.asSize,o=this.options,n=o.orientation.item,r=!1,a=this.dom.frame,h=o.editable.updateTime||o.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="vis-itemset"+(h?" vis-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 u=this.stackDirty,c=this._firstGroup(),p={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,f,u),s.forEach(this.groups,function(t){var i=t==c?p:f,o=t.redraw(e,i,u);r=o||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==n?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},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){var t,e,i=this.groups[v];this.groups[g];if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new l(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=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(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(s.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 o=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.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)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,n=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=e._getType(n),a=o.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,n):(i=s.selected,e._removeItem(s),s=null)),!s){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(n,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},o.prototype._order=function(){s.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);s.extend(n,{height:null}),o=new l(t,i,e),e.groups[t]=o;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("change",{queue:!0})},o.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})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!s.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},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.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)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:r})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=s.getAbsoluteLeft(this.dom.frame),a=t.center.x-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=s.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){i.push(e.id);var s=o._getItemRange(this.itemsData.get(i,this.itemOptions));i=[];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>=s.min&&d<=s.max&&!(a instanceof m)&&i.push(a.id)}}else{var l=i.indexOf(e.id);-1==l?i.push(e.id):i.splice(l,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection()})}}},o._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}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ia&&ea)return n}else if(0===i&&et?-1:1});for(var i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.prepareElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),u={};for(this._getRelevantData(a,u,d,l),this._applySampling(a,u),e=0;ep&&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;ro){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=s)d.push(n[l]);e[t[o]]=d}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0?"left"==r.yAxisOrientation?a=a.concat(n.getData(o)):h=h.concat(n.getData(o)):i[t[s]]=n.getYRange(o,t[s]));c.getStackedYRange(a,i,t,"__barStackLeft","left"),c.getStackedYRange(h,i,t,"__barStackRight","right"),p.getStackedYRange(a,i,t,"__lineStackLeft","left"),p.getStackedYRange(h,i,t,"__lineStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixels=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,this.yAxisRight.amountOfSteps=this.yAxisLeft.amountOfSteps,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],u=0;uy;)y++,l=h.getCurrent(),u=h.isMajor(),p=h.getClassName(),m=f,f=this.body.util.toScreen(l),v=f-m,c&&(c.style.width=v+"px"),this.options.showMinorLabels&&this._repaintMinorText(f,h.getLabelMinor(),t,p),u&&this.options.showMajorLabels?(f>0&&(void 0==g&&(g=f),this._repaintMajorText(f,h.getLabelMajor(),t,p)),c=this._repaintMajorLine(f,t,p)):c=this._repaintMinorLine(f,t,p),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),w=h.getLabelMajor(b),_=w.length*(this.props.majorCharWidth||10)+10;(void 0==g||g>_)&&this._repaintMajorText(0,w,t,p)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",n.style.left=t+"px",n.className="vis-text vis-minor "+o},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",n.style.left=t+"px"},o.prototype._repaintMinorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top=n.majorLabelHeight+"px":o.style.top=this.body.domProps.top.height+"px",o.style.height=n.minorLineHeight+"px",o.style.left=t-n.minorLineWidth/2+"px",o.className="vis-grid vis-vertical vis-minor "+i,o},o.prototype._repaintMajorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top="0":o.style.top=this.body.domProps.top.height+"px",o.style.left=t-n.majorLineWidth/2+"px",o.style.height=n.majorLineHeight+"px",o.className="vis-grid vis-vertical vis-major "+i,o},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:j,clickToUse:!1},A.extend(this.options,this.defaultOptions),this.body={nodes:{},nodeIndices:[],edges:{},edgeIndices:[],data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},container:t,view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new R(function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new r["default"],this.canvas=new y["default"](this.body),this.selectionHandler=new M["default"](this.body,this.canvas),this.interactionHandler=new x["default"](this.body,this.canvas,this.selectionHandler),this.view=new w["default"](this.body,this.canvas),this.renderer=new v["default"](this.body,this.canvas),this.physics=new c["default"](this.body),this.layoutEngine=new D["default"](this.body),this.clustering=new f["default"](this.body),this.manipulation=new C["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new h["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new l["default"](this.body,this.images,this.groups),this.canvas._create(),this.configurator=new S["default"](this,this.body.container,N.configureOptions,this.canvas.pixelRatio),this.setOptions(i),this.setData(e)}var s=i(53),r=o(s),a=i(54),h=o(a),d=i(55),l=o(d),u=i(56),c=o(u),p=i(1),f=o(p),m=i(58),v=o(m),g=i(59),y=o(g),b=i(60),w=o(b),_=i(61),x=o(_),k=i(62),M=o(k),O=i(63),D=o(O),T=i(64),C=o(T),E=i(44),S=o(E),P=i(45),I=o(P),N=i(65);i(66);var z=i(69),A=(i(41),i(57)),L=(i(3),i(4),i(38)),B=i(39),R=i(37),F=i(67),j=i(68);z(n.prototype),n.prototype.setOptions=function(t){if(void 0!==t){var e=I["default"].validate(t,N.allOptions);e===!0&&console.log("%cErrors have been found in the supplied options object.",P.printStyle);var i=["locale","locales","clickToUse"];if(A.selectiveDeepExtend(i,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges), +this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),this.configurator.setOptions(t.configure),this.configurator.options.enabled===!0){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};A.deepExtend(o.nodes,this.nodesHandler.options),A.deepExtend(o.edges,this.edgesHandler.options),A.deepExtend(o.layout,this.layoutEngine.options),A.deepExtend(o.interaction,this.selectionHandler.options),A.deepExtend(o.interaction,this.renderer.options),A.deepExtend(o.interaction,this.interactionHandler.options),A.deepExtend(o.manipulation,this.manipulation.options),A.deepExtend(o.physics,this.physics.options),A.deepExtend(o.global,this.canvas.options),A.deepExtend(o.global,this.options),this.configurator.setModuleOptions(o)}void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new F(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(o)},n.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t._updateVisibleIndices(),t.physics.updatePhysicsData(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation")})},n.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=L.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=B.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images,delete this.body.emitter.emit,delete this.body.emitter.on,delete this.body.emitter.off,delete this.body.emitter.once,delete this.body.emitter;for(var t in this.body.nodes)delete this.body.nodes[t];for(var e in this.body.edges)delete this.body.edges[e];A.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){return this.canvas.setSize.DOMtoCanvas(this.canvas,arguments)},n.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){return this.manipulation.editNodeMode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},n.prototype.getEdges=function(){return this.nodesHandler.getEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){return this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments)},n.prototype.getEdgeAt=function(){return this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments)},n.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){return this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments)},n.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},n.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},n.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},t.exports=n},function(t,e,i){function o(t){this.images={},this.imageBroken={},this.callback=t}o.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var o=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)),o.callback&&(o.images[t]=i,o.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,o.callback&&o.callback(this)):o.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,o.callback&&o.callback(this)):(console.error("Could not load image:",t),this.src=e,o.imageBroken[t]=!0)},i.src=t}return i},t.exports=o},function(t,e,i){function o(t){return I=t,f()}function n(){N=0,z=I.charAt(0)}function s(){N++,z=I.charAt(N)}function r(){return I.charAt(N+1)}function a(t){return B.test(t)}function h(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function d(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=h(n.attr,t.node))),i=s.length-1;i>=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(L=S.NULL,A="";" "===z||" "===z||"\n"===z||"\r"===z;)s();do{var t=!1;if("#"===z){for(var e=N-1;" "===I.charAt(e)||" "===I.charAt(e);)e--;if("\n"===I.charAt(e)||""===I.charAt(e)){for(;""!=z&&"\n"!=z;)s();t=!0}}if("/"===z&&"/"===r()){for(;""!=z&&"\n"!=z;)s();t=!0}if("/"===z&&"*"===r()){for(;""!=z;){if("*"===z&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===z||" "===z||"\n"===z||"\r"===z;)s()}while(t);if(""===z)return void(L=S.DELIMITER);var i=z+r();if(P[i])return L=S.DELIMITER,A=i,s(),void s();if(P[z])return L=S.DELIMITER,A=z,void s();if(a(z)||"-"===z){for(A+=z,s();a(z);)A+=z,s();return"false"===A?A=!1:"true"===A?A=!0:isNaN(Number(A))||(A=Number(A)),void(L=S.IDENTIFIER)}if('"'===z){for(s();""!=z&&('"'!=z||'"'===z&&'"'===r());)A+=z,'"'===z&&s(),s();if('"'!=z)throw x('End of string " expected');return s(),void(L=S.IDENTIFIER)}for(L=S.UNKNOWN;""!=z;)A+=z,s();throw new SyntaxError('Syntax error in part "'+k(A,30)+'"')}function f(){var t={};if(n(),p(),"strict"===A&&(t.strict=!0,p()),("graph"===A||"digraph"===A)&&(t.type=A,p()),L===S.IDENTIFIER&&(t.id=A,p()),"{"!=A)throw x("Angle bracket { expected");if(p(),m(t),"}"!=A)throw x("Angle bracket } expected");if(p(),""!==A)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==A&&"}"!=A;)v(t),";"===A&&p()}function v(t){var e=g(t);if(e)return void w(t,e);var i=y(t);if(!i){if(L!=S.IDENTIFIER)throw x("Identifier expected");var o=A;if(p(),"="===A){if(p(),L!=S.IDENTIFIER)throw x("Identifier expected");t[o]=A,p()}else b(t,o)}}function g(t){var e=null;if("subgraph"===A&&(e={},e.type="subgraph",p(),L===S.IDENTIFIER&&(e.id=A,p())),"{"===A){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=A)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===A?(p(),t.node=_(),"node"):"edge"===A?(p(),t.edge=_(),"edge"):"graph"===A?(p(),t.graph=_(),"graph"):null}function b(t,e){var i={id:e},o=_();o&&(i.attr=o),l(t,i),w(t,e)}function w(t,e){for(;"->"===A||"--"===A;){var i,o=A;p();var n=g(t);if(n)i=n;else{if(L!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=A,l(t,{id:i}),p()}var s=_(),r=c(t,e,i,o,s);u(t,r),e=i}}function _(){for(var t=null;"["===A;){for(p(),t={};""!==A&&"]"!=A;){if(L!=S.IDENTIFIER)throw x("Attribute name expected");var e=A;if(p(),"="!=A)throw x("Equal sign = expected");if(p(),L!=S.IDENTIFIER)throw x("Attribute value expected");var i=A;d(t,e,i),p(),","==A&&p()}if("]"!=A)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(A,30)+'" (char '+N+")")}function k(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 O(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},I="",N=0,z="",A="",L=S.NULL,B=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=T},function(t,e,i){function o(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;an&&(e[o+n++]=u[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;6>p;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;256>c;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){function o(){}var n=i(69),s=i(41),r=i(48),a=i(57),h=(i(3),i(4),i(17),i(32),i(35)),d=i(67),l=i(15),u=i(27);n(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new s(this.dom.root),this.hammer.get("pinch").set({enable:!0}),this.listeners={};var o=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(o.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),r.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),r.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates"];if(a.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"==typeof t.orientation&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new h(this.body);i.setOptions=function(t){var e=t?a.extend({},t):{};e.orientation="top",h.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("hiddenDates"in this.options&&l.convertHiddenOptions(this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new d(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),this.configurator){this.configurator.setOptions(t.configure);var n=a.deepExtend({},this.options);this.components.forEach(function(t){a.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?a.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new u(this.body,{time:i,id:e});return this.customTimes.push(n),this.components.push(n),this.redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(e.start,e.end,i)}},o.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var o=i.valueOf()-e.valueOf();0>=o&&(o=864e5),e=new Date(e.valueOf()-.05*o),i=new Date(i.valueOf()+.05*o)}return{start:e,end:i}},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=a.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,o=this.dom;if(o){l.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(a.addClassName(o.root,"vis-top"),a.removeClassName(o.root,"vis-bottom")):(a.removeClassName(o.root,"vis-top"),a.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=a.option.asSize(e.maxHeight,""),o.root.style.minHeight=a.option.asSize(e.minHeight,""),o.root.style.width=a.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var r=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+r+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=a.option.asSize(e.height,h+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"top"!=e.orientation.item&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=c+"px",o.left.style.left="0",o.left.style.top=c+"px",o.right.style.left="0",o.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(o.shadowTop.style.visibility=p,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=p,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=p,o.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t){var m=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTop0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-network-configuration button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-network-configuration button hover"},e.onmouseout=function(){e.className="vis-network-configuration button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-network-configuration vis-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push(),this.colorPicker.insertTo(this.container)}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-network-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;i>n;n++)o[n-1]=arguments[n];this.allowCreation===!0&&!function(){var i=document.createElement("div");i.className="vis-network-configuration item s"+t.length,o.forEach(function(t){i.appendChild(t)}),e.domElements.push(i)}()}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-network-configuration header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-network-configuration label s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-network-configuration select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s.1*e&&(a.min=e/10),2*e>s&&1!==s&&(a.max=2*e),a.value=e):a.value=o;var h=document.createElement("input");h.className="vis-network-configuration rangeinput",h.value=a.value;var d=this;a.onchange=function(){h.value=this.value,d._update(Number(this.value),i)},a.oninput=function(){h.value=this.value};var l=this._makeLabel(i[i.length-1],i);this._makeItem(i,l,a,h)}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-network-configuration checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-network-configuration text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-network-configuration colorBlock",s.style.backgroundColor=e):s.className="vis-network-configuration colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this,n=e.getBoundingClientRect(),s=document.body.getBoundingClientRect(),r=n.left+n.width+5,a=n.top-s.top+.5*n.height;this.colorPicker.show(r,a),this.colorPicker.setColor(t),this.colorPicker.setCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)})}},{key:"_handleObject",value:function(t){var e=void 0===arguments[1]?[]:arguments[1],i=void 0===arguments[2]?!1:arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],d=h.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var l=this._getValue(d);if(a instanceof Array)this._handleArray(a,l,d);else if("string"==typeof a)this._makeTextInput(a,l,d);else if("boolean"==typeof a)this._makeCheckbox(a,l,d);else if(a instanceof Object){var u=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(u=!1),u===!0)if(void 0!==a.enabled){var c=h.copyAndExtendArray(d,"enabled"),p=this._getValue(c);if(p===!0){var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,p,d)}else{var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;nvar options = "+JSON.stringify(t,null,2)+""}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;is.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),h):n.distance<=d?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),h):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),h),r=!0}},{key:"findInOptions",value:function(e,i,o){var n=void 0===arguments[3]?!1:arguments[3],r=1e9,a="",h=[],d=e.toLowerCase(),l=void 0;for(var u in i){var c=void 0;if(void 0!==i[u].__type__&&n===!0){var p=t.findInOptions(e,i[u],s.copyAndExtendArray(o,u));r>p.distance&&(a=p.closestMatch,h=p.path,r=p.distance,l=p.indexMatch)}else-1!==u.toLowerCase().indexOf(d)&&(l=u),c=t.levenshteinDistance(e,u),r>c&&(a=u,h=s.copyArray(o),r=c)}return{closestMatch:a,path:h,distance:r,indexMatch:l}}},{key:"printLocation",value:function(t,e){for(var i=void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;ns;s++)o+=" ";o+=t[n]+": {\n"}for(var s=0;st[o].y?t[o].y:e,i=i0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o.prototype.draw=function(t,e,i){if(null!=t&&t.length>0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=n.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.interpolation.enabled?o._catmullRom(t,e):o._linear(t),1==e.options.shaded.enabled){var d,l=n.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+" vis-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&&s.draw(t,e,i)}},o._catmullRomUniform=function(t){for(var e,i,o,n,s,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],o=t[l+1],n=d>l+2?t[l+2]:o,s={x:(-e.x+6*i.x+o.x)*h,y:(-e.y+6*i.y+o.y)*h},r={x:(i.x+6*o.x-n.x)*h,y:(i.y+6*o.y-n.y)*h},a+="C"+s.x+","+s.y+" "+r.x+","+r.y+" "+o.x+","+o.y+" ";return a},o._catmullRom=function(t,e){var i=e.options.interpolation.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var o,n,s,r,a,h,d,l,u,c,p,f,m,v,g,y,b,w,_,x=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",k=t.length,M=0;k-1>M;M++)o=0==M?t[0]:t[M-1],n=t[M],s=t[M+1],r=k>M+2?t[M+2]:s,d=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),l=Math.sqrt(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2)),u=Math.sqrt(Math.pow(s.x-r.x,2)+Math.pow(s.y-r.y,2)),v=Math.pow(u,i),y=Math.pow(u,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),c=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={x:(-b*o.x+c*n.x+w*s.x)*f,y:(-b*o.y+c*n.y+w*s.y)*f},h={x:(y*n.x+p*s.x-b*r.x)*m,y:(y*n.y+p*s.y-b*r.y)*m},0==a.x&&0==a.y&&(a=n),0==h.x&&0==h.y&&(h=s),x+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+s.x+","+s.y+" ";return x},o._linear=function(t){for(var e="",i=0;it[o].y?t[o].y:e,i=i0&&(r=Math.min(r,Math.abs(c[l-1].x-a))),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved),y=l-(p[a].resolved+1);g0&&(r=Math.min(r,Math.abs(c[y].x-a))),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,d.options.stack===!0?c[l].y0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=nt[o].y?t[o].y:e,i=i0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[i],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i1&&(this.startedStabilization=!1),this.stopSimulation())}},{key:"_emitStabilized",value:function(){var t=this;this.stabilizationIterations>1&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:t.stabilizationIterations}),t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){this.stabilized===!1&&(this.calculateForces(),this.stabilized=this.moveNodes(),this.stabilized===!0?this.revert():this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilizationIterations++)}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(o);for(var n=0;na&&o===!0,t=!0}return t===!0?n>.5*this.options.maxVelocity?!1:o:!0}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.options.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=void 0===arguments[0]?this.options.stabilization.iterations:arguments[0];"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedrawRequests"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_stabilizationBatch",value:function(){for(var t=0;this.stabilized===!1&&ti;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(o.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])):o(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return o(t);if(t instanceof Date)return o(t.valueOf());if(o.isMoment(t))return o(t);if(e.isString(t))return n=s.exec(t),o(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(o.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=s.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=s.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 s=/^\/?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":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;oi;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,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgba"))return t;if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var r={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=r.split(t.style.cssText),n=r.split(i),s=e.extend(o,n);t.style.cssText=r.join(s)},e.removeCssText=function(t,e){var i=r.split(t.style.cssText),o=r.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=r.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){ +t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var o=Object.create(i),n=0;n=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o){for(var n,s,r,a,h=1e4,d=0,l=0,u=t.length-1;u>=l&&h>d;){if(a=Math.floor(.5*(u+l)),n=t[Math.max(0,a-1)][i],s=t[a][i],r=t[Math.min(t.length-1,a+1)][i],s==e)return a;if(e>n&&s>e)return"before"==o?Math.max(0,a-1):a;if(e>s&&r>e)return"before"==o?a:Math.min(t.length-1,a+1);e>s?l=a+1:u=a-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.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,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedrawRequests===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,!1),0):window.requestAnimationFrame(this._redraw.bind(this,!1)))}},{key:"_redraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");(0===this.canvas.frame.canvas.width||0===this.canvas.frame.canvas.height)&&this.canvas.setSize(),void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;e.clearRect(0,0,i,o),e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),this.controlNodesActive===!0&&this._drawControlNodes(e),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l0)for(var r=0;rt.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.top&&(i=t.shape.boundingBox.top),ot.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.top&&(i=t.shape.boundingBox.top),o.5*this.body.nodeIndices.length)return void this.fit(i,!1);t=this._getRange(i.nodes);var a=this.body.nodeIndices.length;e=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);e*=h}else{this.body.emitter.emit("_resizeNodes"),t=this._getRange(i.nodes);var d=1.1*Math.abs(t.maxX-t.minX),l=1.1*Math.abs(t.maxY-t.minY),u=this.canvas.frame.canvas.clientWidth/d,c=this.canvas.frame.canvas.clientHeight/l;e=c>=u?u:c}e>1?e=1:0===e&&(e=1);var p=this._findCenter(t),f={position:p,scale:e,animation:i.animation};this.moveTo(f)}},{key:"focus",value:function(t){var e=void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.body.view.translation),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=s.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return{x:this.body.view.translation.x,y:this.body.view.translation.y}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&t.changedPointers[0].ctrlKey;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.pageX,y:t.pageY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount();h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0):0>h-n&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer),void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e));var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center);this.selectionHandler._generateClickEvent("dragging",t,i);var o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){var t=i.x-e.drag.pointer.x,n=i.y-e.drag.pointer.y;o.forEach(function(i){var o=i.node;i.xFixed===!1&&(o.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(i.x)+t)),i.yFixed===!1&&(o.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(i.y)+n))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.body.emitter.emit("startSimulation")):this.body.emitter.emit("_requestRedraw"),this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale})}}},{key:"onMouseWheel",value:function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.pageX,y:t.pageY});this.zoom(i,n)}t.preventDefault()}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.pageX,y:t.pageY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hover===!0){var n=this.selectionHandler.getNodeAt(i);void 0===n&&(n=this.selectionHandler.getEdgeAt(i)),this.selectionHandler.hoverObject(n)}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,u=[],c=0;c0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],c=0;c0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return void 0}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return void 0}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value: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}},{key:"_selectionIsEmpty",value: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}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptions(e);if(i===!0)return this.body.emitter.emit("refresh"),s.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptions",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={solver:"hierarchicalRepulsion"},this.optionsBackup.physics={solver:"barnesHut"}):"object"==typeof options.physics?(this.optionsBackup.physics={solver:"barnesHut"},void 0!==options.physics.solver&&(this.optionsBackup.physics={solver:options.physics.solver}),t.physics.solver="hierarchicalRepulsion"):options.physics!==!1&&(this.optionsBackup.physics={solver:"barnesHut"},t.physics.solver="hierarchicalRepulsion");var e="horizontal";("RL"===this.options.hierarchical.direction||"LR"===this.options.hierarchical.direction)&&(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth,dynamic:!0},t.edges.smooth={enabled:t.edges.smooth,dynamic:!1,type:e}):(this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!0},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!1,type:e}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;e0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.nodeSpacing=100;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():("directed"===this.options.hierarchical.sortMethod,0||this._determineLevelsDirected()));var n=this._getDistribution();this._placeNodesByHierarchy(n)}}},{key:"_placeNodesByHierarchy",value:function(t){var e=void 0,i=void 0;this.positionedNodes={};for(var o in t)if(t.hasOwnProperty(o))for(e in t[o].nodes)t[o].nodes.hasOwnProperty(e)&&(i=t[o].nodes[e],"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===i.x&&(i.x=t[o].distance),t[o].distance=i.x+this.nodeSpacing):(void 0===i.y&&(i.y=t[o].distance),t[o].distance=i.y+this.nodeSpacing),this.positionedNodes[e]=!0,this._placeBranchNodes(i.edges,i.id,t,o))}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={amount:0,nodes:{},distance:0}),t[o].amount+=1,t[o].nodes[e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length0&&(i=this._getHubSize(),0!==i);)for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],e.edges.length===i&&this._setLevel(0,e))}},{key:"_setLevel",value:function(t,e){if(void 0===this.hierarchicalLevels[e.id]){var i=void 0;this.hierarchicalLevels[e.id]=t;for(var o=0;oo&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===s.x&&(s.x=Math.max(i[a].distance,r.x)),i[a].distance=s.x+this.nodeSpacing,this.positionedNodes[s.id]=!0):(void 0===s.y&&(s.y=Math.max(i[a].distance,r.y)),i[a].distance=s.y+this.nodeSpacing),this.positionedNodes[s.id]=!0,s.edges.length>1&&this._placeBranchNodes(s.edges,s.id,i,a))}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode&&(t.body.data.edges.remove(e.edges),t.body.data.nodes.remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.remove(i),this.body.data.nodes.remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);return i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e,this.body.functions.createNode(i)}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,dynamic:!1,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x), +i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0});var o="string",n="boolean",s="number",r="array",a="object",h="dom",d="function",l="undefined",u={configure:{enabled:{"boolean":n},filter:{"boolean":n,string:o,array:r,fn:d},container:{dom:h},showButton:{"boolean":n},__type__:{object:a,"boolean":n,string:o,array:r,fn:d}},edges:{arrows:{to:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},middle:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},from:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},__type__:{string:["from","to","middle"],object:a}},color:{color:{string:o},highlight:{string:o},hover:{string:o},inherit:{string:["from","to","both"],"boolean":n},opacity:{number:s},__type__:{object:a,string:o}},dashes:{"boolean":n,array:r},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:a,string:o}},hidden:{"boolean":n},hoverWidth:{fn:d,number:s},label:{string:o,undef:l},length:{number:s,undef:l},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},selectionWidth:{fn:d,number:s},selfReferenceSize:{number:s},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},smooth:{enabled:{"boolean":n},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW"]},roundness:{number:s},__type__:{object:a,"boolean":n}},title:{string:o,undef:l},width:{number:s},value:{number:s,undef:l},__type__:{object:a}},groups:{useDefaultGroups:{"boolean":n},__any__:"get from nodes, will be overwritten below",__type__:{object:a}},interaction:{dragNodes:{"boolean":n},dragView:{"boolean":n},hideEdgesOnDrag:{"boolean":n},hideNodesOnDrag:{"boolean":n},hover:{"boolean":n},keyboard:{enabled:{"boolean":n},speed:{x:{number:s},y:{number:s},zoom:{number:s},__type__:{object:a}},bindToWindow:{"boolean":n},__type__:{object:a,"boolean":n}},multiselect:{"boolean":n},navigationButtons:{"boolean":n},selectable:{"boolean":n},selectConnectedEdges:{"boolean":n},tooltipDelay:{number:s},zoomView:{"boolean":n},__type__:{object:a}},layout:{randomSeed:{undef:l,number:s},hierarchical:{enabled:{"boolean":n},levelSeparation:{number:s},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:a,"boolean":n}},__type__:{object:a}},manipulation:{enabled:{"boolean":n},initiallyActive:{"boolean":n},addNode:{"boolean":n,fn:d},addEdge:{"boolean":n,fn:d},editNode:{fn:d},editEdge:{"boolean":n,fn:d},deleteNode:{"boolean":n,fn:d},deleteEdge:{"boolean":n,fn:d},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:a,"boolean":n}},nodes:{borderWidth:{number:s},borderWidthSelected:{number:s,undef:l},brokenImage:{string:o,undef:l},color:{border:{string:o},background:{string:o},highlight:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},hover:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},__type__:{object:a,string:o}},fixed:{x:{"boolean":n},y:{"boolean":n},__type__:{object:a,"boolean":n}},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},__type__:{object:a,string:o}},group:{string:o,number:s,undef:l},hidden:{"boolean":n},icon:{face:{string:o},code:{string:o},size:{number:s},color:{string:o},__type__:{object:a}},id:{string:o,number:s},image:{string:o,undef:l},label:{string:o,undef:l},level:{number:s,undef:l},mass:{number:s},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},size:{number:s},title:{string:o,undef:l},value:{number:s,undef:l},x:{number:s},y:{number:s},__type__:{object:a}},physics:{barnesHut:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:a}},forceAtlas2Based:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:a}},repulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},hierarchicalRepulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},maxVelocity:{number:s},minVelocity:{number:s},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{"boolean":n},iterations:{number:s},updateInterval:{number:s},onlyDynamicEdges:{"boolean":n},fit:{"boolean":n},__type__:{object:a,"boolean":n}},timestep:{number:s},__type__:{object:a,"boolean":n}},autoResize:{"boolean":n},clickToUse:{"boolean":n},locale:{string:o},locales:{__any__:{object:a},__type__:{object:a}},height:{string:o},width:{string:o},__type__:{object:a}};u.groups.__any__=u.nodes,u.manipulation.controlNodeStyle=u.nodes;var c={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]},global:{locale:["en","nl"]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,u=e+r,c=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,c+h,u,c,u),this.bezierCurveTo(c-h,u,t,p+d,t,p),this.bezierCurveTo(t,p-d,c-h,e,c,e),this.bezierCurveTo(c+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,c+h,m,c,m),this.bezierCurveTo(c-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),u=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,u),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=0>r?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.bodyHammer=a(document&&document.body,{prevent_default:!1}),this.bodyHammer.on("tap",function(i){n(i.target,t)||e.deactivate()}),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(88),r=i(69),a=i(41),h=i(57);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.bodyHammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){function o(t){return t?n(t):void 0}function n(t){for(var e in o.prototype)t[e]=o.prototype[e];return t}t.exports=o,o.prototype.on=o.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},o.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;no;++o)i[o].apply(this,e)}return this},o.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},o.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return Si.apply(null,arguments)}function i(t){Si=t}function o(t){return"[object Array]"===Object.prototype.toString.call(t)}function n(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t,e){var i,o=[];for(i=0;i0)for(i in Ii)o=Ii[i],n=e[o],"undefined"!=typeof n&&(t[o]=n);return t}function f(t){p(this,t),this._d=new Date(+t._d),Ni===!1&&(Ni=!0,e.updateOffset(this),Ni=!1)}function m(t){return t instanceof f||null!=t&&null!=t._isAMomentObject}function v(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&v(t[o])!==v(e[o]))&&r++;return r+s}function y(){}function b(t){return t?t.toLowerCase().replace("_","-"):t}function w(t){for(var e,i,o,n,s=0;s0;){if(o=_(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&g(n,i,!0)>=e-1)break;e--}s++}return null}function _(e){var i=null;if(!zi[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Pi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(o){}return zi[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?M(t):k(t,e),i&&(Pi=i)),Pi._abbr}function k(t,e){return null!==e?(e.abbr=t,zi[t]||(zi[t]=new y),zi[t].set(e),x(t),zi[t]):(delete zi[t],null)}function M(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Pi;if(!o(t)){if(e=_(t))return e;t=[t]}return w(t)}function O(t,e){var i=t.toLowerCase();Ai[i]=Ai[i+"s"]=Ai[e]=t}function D(t){return"string"==typeof t?Ai[t]||Ai[t.toLowerCase()]:void 0}function T(t){var e,i,o={};for(i in t)r(t,i)&&(e=D(i),e&&(o[e]=t[i]));return o}function C(t,i){return function(o){return null!=o?(S(this,t,o),e.updateOffset(this,i),this):E(this,t)}}function E(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function S(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function P(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=D(t),"function"==typeof this[t])return this[t](e);return this}function I(t,e,i){for(var o=""+Math.abs(t),n=t>=0;o.lengthe;e++)Fi[o[e]]?o[e]=Fi[o[e]]:o[e]=z(o[e]);return function(n){var s="";for(e=0;i>e;e++)s+=o[e]instanceof Function?o[e].call(n,t):o[e];return s}}function L(t,e){return t.isValid()?(e=B(e,t.localeData()),Ri[e]||(Ri[e]=A(e)),Ri[e](t)):t.localeData().invalidDate()}function B(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(Bi.lastIndex=0;o>=0&&Bi.test(t);)t=t.replace(Bi,i),Bi.lastIndex=0,o-=1;return t}function R(t,e,i){to[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function F(t,e){return r(to,t)?to[t](e._strict,e._locale):new RegExp(j(t))}function j(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function H(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=v(t)}),i=0;io;o++){if(n=h([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function Z(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):E(this,"Month")}function K(){return G(this.year(),this.month())}function J(t){var e,i=t._a;return i&&-2===l(t).overflow&&(e=i[oo]<0||i[oo]>11?oo:i[no]<1||i[no]>G(i[io],i[oo])?no:i[so]<0||i[so]>24||24===i[so]&&(0!==i[ro]||0!==i[ao]||0!==i[ho])?so:i[ro]<0||i[ro]>59?ro:i[ao]<0||i[ao]>59?ao:i[ho]<0||i[ho]>999?ho:-1,l(t)._overflowDayOfYear&&(io>e||e>no)&&(e=no),l(t).overflow=e),t}function Q(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0,o=t+"\n"+(new Error).stack;return a(function(){return i&&(Q(o),i=!1),e.apply(this,arguments)},e)}function tt(t,e){co[t]||(Q(e),co[t]=!0)}function et(t){var e,i,o=t._i,n=po.exec(o);if(n){for(l(t).iso=!0,e=0,i=fo.length;i>e;e++)if(fo[e][1].exec(o)){t._f=fo[e][0]+(n[6]||" ");break}for(e=0,i=mo.length;i>e;e++)if(mo[e][1].exec(o)){t._f+=mo[e][0];break}o.match(Ji)&&(t._f+="Z"),wt(t)}else t._isValid=!1}function it(t){var i=vo.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(et(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function ot(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 1970>t&&a.setFullYear(t),a}function nt(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function st(t){return rt(t)?366:365}function rt(t){return t%4===0&&t%100!==0||t%400===0}function at(){return rt(this.year())}function ht(t,e,i){var o,n=i-e,s=i-t.day();return s>n&&(s-=7),n-7>s&&(s+=7),o=Tt(t).add(s,"d"),{week:Math.ceil(o.dayOfYear()/7),year:o.year()}}function dt(t){return ht(t,this._week.dow,this._week.doy).week}function lt(){return this._week.dow}function ut(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=ht(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ft(t,e,i,o,n){var s,r,a=nt(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:n,s=n-a+(a>o?7:0)-(n>a?7:0),r=7*(e-1)+(i-n)+s+1,{year:r>0?t:t-1,dayOfYear:r>0?r:st(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function vt(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function yt(t){var e,i,o,n,s=[];if(!t._d){for(o=gt(t),t._w&&null==t._a[no]&&null==t._a[oo]&&bt(t),t._dayOfYear&&(n=vt(t._a[io],o[io]),t._dayOfYear>st(n)&&(l(t)._overflowDayOfYear=!0),i=nt(n,0,t._dayOfYear),t._a[oo]=i.getUTCMonth(),t._a[no]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[so]&&0===t._a[ro]&&0===t._a[ao]&&0===t._a[ho]&&(t._nextDay=!0,t._a[so]=0),t._d=(t._useUTC?nt:ot).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[so]=24)}}function bt(t){var e,i,o,n,s,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=vt(e.GG,t._a[io],ht(Tt(),1,4).year),o=vt(e.W,1),n=vt(e.E,1)):(s=t._locale._week.dow,r=t._locale._week.doy,i=vt(e.gg,t._a[io],ht(Tt(),s,r).year),o=vt(e.w,1),null!=e.d?(n=e.d,s>n&&++o):n=null!=e.e?e.e+s:s),a=ft(i,o,n,r,s),t._a[io]=a.year,t._dayOfYear=a.dayOfYear}function wt(t){if(t._f===e.ISO_8601)return void et(t);t._a=[],l(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=B(t._f,t._locale).match(Li)||[],i=0;i0&&l(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Fi[s]?(o?l(t).empty=!1:l(t).unusedTokens.push(s),W(s,o,t)):t._strict&&!o&&l(t).unusedTokens.push(s);l(t).charsLeftOver=h-d,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[so]<=12&&t._a[so]>0&&(l(t).bigHour=void 0),t._a[so]=_t(t._locale,t._a[so],t._meridiem),yt(t),J(t)}function _t(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,s;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;ns)&&(o=s,i=e));a(t,i||e)}function kt(t){if(!t._d){var e=T(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],yt(t)}}function Mt(t){var e,i=t._i,s=t._f;return t._locale=t._locale||M(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new f(J(i)):(o(s)?xt(t):s?wt(t):n(i)?t._d=i:Ot(t),e=new f(J(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Ot(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?it(t):o(i)?(t._a=s(i.slice(0),function(t){return parseInt(t,10)}),yt(t)):"object"==typeof i?kt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Dt(t,e,i,o,n){var s={};return"boolean"==typeof i&&(o=i,i=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=n,s._l=i,s._i=t,s._f=e,s._strict=o,Mt(s)}function Tt(t,e,i,o){return Dt(t,e,i,o,!1)}function Ct(t,e){var i,n;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Tt();for(i=e[0],n=1;nt&&(t=-t,i="-"),i+I(~~(t/60),2)+e+I(~~t%60,2)})}function zt(t){var e=(t||"").match(Ji)||[],i=e[e.length-1]||[],o=(i+"").match(_o)||["-",0,0],n=+(60*o[1])+v(o[2]);return"+"===o[0]?n:-n}function At(t,i){var o,s;return i._isUTC?(o=i.clone(),s=(m(t)||n(t)?+t:+Tt(t))-+o,o._d.setTime(+o._d+s),e.updateOffset(o,!1),o):Tt(t).local()}function Lt(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Bt(t,i){var o,n=this._offset||0;return null!=t?("string"==typeof t&&(t=zt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=Lt(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?$t(this,Xt(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:Lt(this)}function Rt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ft(t){return this.utcOffset(0,t)}function jt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Lt(this),"m")),this}function Ht(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(zt(this._i)),this}function Yt(t){return t=t?Tt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){ +if(this._a){var t=this._isUTC?h(this._a):Tt(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function Ut(){return!this._isUTC}function Vt(){return this._isUTC}function qt(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,o,n,s=t,a=null;return It(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(a=xo.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:v(a[no])*i,h:v(a[so])*i,m:v(a[ro])*i,s:v(a[ao])*i,ms:v(a[ho])*i}):(a=ko.exec(t))?(i="-"===a[1]?-1:1,s={y:Zt(a[2],i),M:Zt(a[3],i),d:Zt(a[4],i),h:Zt(a[5],i),m:Zt(a[6],i),s:Zt(a[7],i),w:Zt(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Jt(Tt(s.from),Tt(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new Pt(s),It(t)&&r(t,"_locale")&&(o._locale=t._locale),o}function Zt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Kt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Jt(t,e){var i;return e=At(e,t),t.isBefore(e)?i=Kt(t,e):(i=Kt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Qt(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(tt(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Xt(i,o),$t(this,n,t),this}}function $t(t,i,o,n){var s=i._milliseconds,r=i._days,a=i._months;n=null==n?!0:n,s&&t._d.setTime(+t._d+s*o),r&&S(t,"Date",E(t,"Date")+r*o),a&&X(t,E(t,"Month")+a*o),n&&e.updateOffset(t,r||a)}function te(t){var e=t||Tt(),i=At(e,this).startOf("day"),o=this.diff(i,"days",!0),n=-6>o?"sameElse":-1>o?"lastWeek":0>o?"lastDay":1>o?"sameDay":2>o?"nextDay":7>o?"nextWeek":"sameElse";return this.format(this.localeData().calendar(n,this,Tt(e)))}function ee(){return new f(this)}function ie(t,e){var i;return e=D("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Tt(t),+this>+t):(i=m(t)?+t:+Tt(t),i<+this.clone().startOf(e))}function oe(t,e){var i;return e=D("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Tt(t),+t>+this):(i=m(t)?+t:+Tt(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function ae(t,e,i){var o,n,s=At(t,this),r=6e4*(s.utcOffset()-this.utcOffset());return e=D(e),"year"===e||"month"===e||"quarter"===e?(n=he(this,s),"quarter"===e?n/=3:"year"===e&&(n/=12)):(o=this-s,n="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),i?n:re(n)}function he(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)}function de(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function le(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Tt([2e3,1]).day(e),o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(o.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Fe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ze(t,this.localeData()),this.add(t-e,"d")):e}function je(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function He(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Ye(t,e){N(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function We(t,e){return e._meridiemParse}function Ge(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ue(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ve(t){N(0,[t,3],0,"millisecond")}function qe(){return this._isUTC?"UTC":""}function Xe(){return this._isUTC?"Coordinated Universal Time":""}function Ze(t){return Tt(1e3*t)}function Ke(){return Tt.apply(null,arguments).parseZone()}function Je(t,e,i){var o=this._calendar[t];return"function"==typeof o?o.call(e,i):o}function Qe(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}function $e(){return this._invalidDate}function ti(t){return this._ordinal.replace("%d",t)}function ei(t){return t}function ii(t,e,i,o){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,o):n.replace(/%d/i,t)}function oi(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ni(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)}function si(t,e,i,o){var n=M(),s=h().set(o,e);return n[i](s,t)}function ri(t,e,i,o,n){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return si(t,e,i,n);var s,r=[];for(s=0;o>s;s++)r[s]=si(t,s,i,n);return r}function ai(t,e){return ri(t,e,"months",12,"month")}function hi(t,e){return ri(t,e,"monthsShort",12,"month")}function di(t,e){return ri(t,e,"weekdays",7,"day")}function li(t,e){return ri(t,e,"weekdaysShort",7,"day")}function ui(t,e){return ri(t,e,"weekdaysMin",7,"day")}function ci(){var t=this._data;return this._milliseconds=Uo(this._milliseconds),this._days=Uo(this._days),this._months=Uo(this._months),t.milliseconds=Uo(t.milliseconds),t.seconds=Uo(t.seconds),t.minutes=Uo(t.minutes),t.hours=Uo(t.hours),t.months=Uo(t.months),t.years=Uo(t.years),this}function pi(t,e,i,o){var n=Xt(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function fi(t,e){return pi(this,t,e,1)}function mi(t,e){return pi(this,t,e,-1)}function vi(){var t,e,i,o=this._milliseconds,n=this._days,s=this._months,r=this._data,a=0;return r.milliseconds=o%1e3,t=re(o/1e3),r.seconds=t%60,e=re(t/60),r.minutes=e%60,i=re(e/60),r.hours=i%24,n+=re(i/24),a=re(gi(n)),n-=re(yi(a)),s+=re(n/30),n%=30,a+=re(s/12),s%=12,r.days=n,r.months=s,r.years=a,this}function gi(t){return 400*t/146097}function yi(t){return 146097*t/400}function bi(t){var e,i,o=this._milliseconds;if(t=D(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+12*gi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(yi(this._months/12)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function wi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*v(this._months/12)}function _i(t){return function(){return this.as(t)}}function xi(t){return t=D(t),this[t+"s"]()}function ki(t){return function(){return this._data[t]}}function Mi(){return re(this.days()/7)}function Oi(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function Di(t,e,i){var o=Xt(t).abs(),n=hn(o.as("s")),s=hn(o.as("m")),r=hn(o.as("h")),a=hn(o.as("d")),h=hn(o.as("M")),d=hn(o.as("y")),l=n0,l[4]=i,Oi.apply(null,l)}function Ti(t,e){return void 0===dn[t]?!1:void 0===e?dn[t]:(dn[t]=e,!0)}function Ci(t){var e=this.localeData(),i=Di(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ei(){var t=ln(this.years()),e=ln(this.months()),i=ln(this.days()),o=ln(this.hours()),n=ln(this.minutes()),s=ln(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(o||n||s?"T":"")+(o?o+"H":"")+(n?n+"M":"")+(s?s+"S":""):"P0D"}var Si,Pi,Ii=e.momentProperties=[],Ni=!1,zi={},Ai={},Li=/(\[[^\[]*\])|(\\)?(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,Bi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ri={},Fi={},ji=/\d/,Hi=/\d\d/,Yi=/\d{3}/,Wi=/\d{4}/,Gi=/[+-]?\d{6}/,Ui=/\d\d?/,Vi=/\d{1,3}/,qi=/\d{1,4}/,Xi=/[+-]?\d{1,6}/,Zi=/\d+/,Ki=/[+-]?\d+/,Ji=/Z|[+-]\d\d:?\d\d/gi,Qi=/[+-]?\d+(\.\d{1,3})?/,$i=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,to={},eo={},io=0,oo=1,no=2,so=3,ro=4,ao=5,ho=6;N("M",["MM",2],"Mo",function(){return this.month()+1}),N("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),N("MMMM",0,0,function(t){return this.localeData().months(this,t)}),O("month","M"),R("M",Ui),R("MM",Ui,Hi),R("MMM",$i),R("MMMM",$i),H(["M","MM"],function(t,e){e[oo]=v(t)-1}),H(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[oo]=n:l(i).invalidMonth=t});var lo="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),uo="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),co={};e.suppressDeprecationWarnings=!1;var po=/^\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)?)?$/,fo=[["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}/]],mo=[["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/]],vo=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("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":""))}),N(0,["YY",2],0,function(){return this.year()%100}),N(0,["YYYY",4],0,"year"),N(0,["YYYYY",5],0,"year"),N(0,["YYYYYY",6,!0],0,"year"),O("year","y"),R("Y",Ki),R("YY",Ui,Hi),R("YYYY",qi,Wi),R("YYYYY",Xi,Gi),R("YYYYYY",Xi,Gi),H(["YYYY","YYYYY","YYYYYY"],io),H("YY",function(t,i){i[io]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return v(t)+(v(t)>68?1900:2e3)};var go=C("FullYear",!1);N("w",["ww",2],"wo","week"),N("W",["WW",2],"Wo","isoWeek"),O("week","w"),O("isoWeek","W"),R("w",Ui),R("ww",Ui,Hi),R("W",Ui),R("WW",Ui,Hi),Y(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=v(t)});var yo={dow:0,doy:6};N("DDD",["DDDD",3],"DDDo","dayOfYear"),O("dayOfYear","DDD"),R("DDD",Vi),R("DDDD",Yi),H(["DDD","DDDD"],function(t,e,i){i._dayOfYear=v(t)}),e.ISO_8601=function(){};var bo=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Tt.apply(null,arguments);return this>t?this:t}),wo=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Tt.apply(null,arguments);return t>this?this:t});Nt("Z",":"),Nt("ZZ",""),R("Z",Ji),R("ZZ",Ji),H(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=zt(t)});var _o=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var xo=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,ko=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Xt.fn=Pt.prototype;var Mo=Qt(1,"add"),Oo=Qt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Do=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});N(0,["gg",2],0,function(){return this.weekYear()%100}),N(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Te("gggg","weekYear"),Te("ggggg","weekYear"),Te("GGGG","isoWeekYear"),Te("GGGGG","isoWeekYear"),O("weekYear","gg"),O("isoWeekYear","GG"),R("G",Ki),R("g",Ki),R("GG",Ui,Hi),R("gg",Ui,Hi),R("GGGG",qi,Wi),R("gggg",qi,Wi),R("GGGGG",Xi,Gi),R("ggggg",Xi,Gi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=v(t)}),Y(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),N("Q",0,0,"quarter"),O("quarter","Q"),R("Q",ji),H("Q",function(t,e){e[oo]=3*(v(t)-1)}),N("D",["DD",2],"Do","date"),O("date","D"),R("D",Ui),R("DD",Ui,Hi),R("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),H(["D","DD"],no),H("Do",function(t,e){e[no]=v(t.match(Ui)[0],10)});var To=C("Date",!0);N("d",0,"do","day"),N("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),N("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),N("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),N("e",0,0,"weekday"),N("E",0,0,"isoWeekday"),O("day","d"),O("weekday","e"),O("isoWeekday","E"),R("d",Ui),R("e",Ui),R("E",Ui),R("dd",$i),R("ddd",$i),R("dddd",$i),Y(["dd","ddd","dddd"],function(t,e,i){var o=i._locale.weekdaysParse(t);null!=o?e.d=o:l(i).invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,o){e[o]=v(t)});var Co="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Eo="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),So="Su_Mo_Tu_We_Th_Fr_Sa".split("_");N("H",["HH",2],0,"hour"),N("h",["hh",2],0,function(){return this.hours()%12||12}),Ye("a",!0),Ye("A",!1),O("hour","h"),R("a",We),R("A",We),R("H",Ui),R("h",Ui),R("HH",Ui,Hi),R("hh",Ui,Hi),H(["H","HH"],so),H(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),H(["h","hh"],function(t,e,i){e[so]=v(t),l(i).bigHour=!0});var Po=/[ap]\.?m?\.?/i,Io=C("Hours",!0);N("m",["mm",2],0,"minute"),O("minute","m"),R("m",Ui),R("mm",Ui,Hi),H(["m","mm"],ro);var No=C("Minutes",!1);N("s",["ss",2],0,"second"),O("second","s"),R("s",Ui),R("ss",Ui,Hi),H(["s","ss"],ao);var zo=C("Seconds",!1);N("S",0,0,function(){return~~(this.millisecond()/100)}),N(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ve("SSS"),Ve("SSSS"),O("millisecond","ms"),R("S",Vi,ji),R("SS",Vi,Hi),R("SSS",Vi,Yi),R("SSSS",Zi),H(["S","SS","SSS","SSSS"],function(t,e){e[ho]=v(1e3*("0."+t))});var Ao=C("Milliseconds",!1);N("z",0,0,"zoneAbbr"),N("zz",0,0,"zoneName");var Lo=f.prototype;Lo.add=Mo,Lo.calendar=te,Lo.clone=ee,Lo.diff=ae,Lo.endOf=be,Lo.format=ue,Lo.from=ce,Lo.fromNow=pe,Lo.to=fe,Lo.toNow=me,Lo.get=P,Lo.invalidAt=De,Lo.isAfter=ie,Lo.isBefore=oe,Lo.isBetween=ne,Lo.isSame=se,Lo.isValid=Me,Lo.lang=Do,Lo.locale=ve,Lo.localeData=ge,Lo.max=wo,Lo.min=bo,Lo.parsingFlags=Oe,Lo.set=P,Lo.startOf=ye,Lo.subtract=Oo,Lo.toArray=ke,Lo.toDate=xe,Lo.toISOString=le,Lo.toJSON=le,Lo.toString=de,Lo.unix=_e,Lo.valueOf=we,Lo.year=go,Lo.isLeapYear=at,Lo.weekYear=Ee,Lo.isoWeekYear=Se,Lo.quarter=Lo.quarters=Ne,Lo.month=Z,Lo.daysInMonth=K,Lo.week=Lo.weeks=ct,Lo.isoWeek=Lo.isoWeeks=pt,Lo.weeksInYear=Ie,Lo.isoWeeksInYear=Pe,Lo.date=To,Lo.day=Lo.days=Fe,Lo.weekday=je,Lo.isoWeekday=He,Lo.dayOfYear=mt,Lo.hour=Lo.hours=Io,Lo.minute=Lo.minutes=No,Lo.second=Lo.seconds=zo,Lo.millisecond=Lo.milliseconds=Ao,Lo.utcOffset=Bt,Lo.utc=Ft,Lo.local=jt,Lo.parseZone=Ht,Lo.hasAlignedHourOffset=Yt,Lo.isDST=Wt,Lo.isDSTShifted=Gt,Lo.isLocal=Ut,Lo.isUtcOffset=Vt,Lo.isUtc=qt,Lo.isUTC=qt,Lo.zoneAbbr=qe,Lo.zoneName=Xe,Lo.dates=$("dates accessor is deprecated. Use date instead.",To),Lo.months=$("months accessor is deprecated. Use month instead",Z),Lo.years=$("years accessor is deprecated. Use year instead",go),Lo.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Rt);var Bo=Lo,Ro={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Fo={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"},jo="Invalid date",Ho="%d",Yo=/\d{1,2}/,Wo={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"},Go=y.prototype;Go._calendar=Ro,Go.calendar=Je,Go._longDateFormat=Fo,Go.longDateFormat=Qe,Go._invalidDate=jo,Go.invalidDate=$e,Go._ordinal=Ho,Go.ordinal=ti,Go._ordinalParse=Yo,Go.preparse=ei,Go.postformat=ei,Go._relativeTime=Wo,Go.relativeTime=ii,Go.pastFuture=oi,Go.set=ni,Go.months=U,Go._months=lo,Go.monthsShort=V,Go._monthsShort=uo,Go.monthsParse=q,Go.week=dt,Go._week=yo,Go.firstDayOfYear=ut,Go.firstDayOfWeek=lt,Go.weekdays=Ae,Go._weekdays=Co,Go.weekdaysMin=Be,Go._weekdaysMin=So,Go.weekdaysShort=Le,Go._weekdaysShort=Eo,Go.weekdaysParse=Re,Go.isPM=Ge,Go._meridiemParse=Po,Go.meridiem=Ue,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===v(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",M);var Uo=Math.abs,Vo=_i("ms"),qo=_i("s"),Xo=_i("m"),Zo=_i("h"),Ko=_i("d"),Jo=_i("w"),Qo=_i("M"),$o=_i("y"),tn=ki("milliseconds"),en=ki("seconds"),on=ki("minutes"),nn=ki("hours"),sn=ki("days"),rn=ki("months"),an=ki("years"),hn=Math.round,dn={s:45,m:45,h:22,d:26,M:11},ln=Math.abs,un=Pt.prototype;un.abs=ci,un.add=fi,un.subtract=mi,un.as=bi,un.asMilliseconds=Vo,un.asSeconds=qo,un.asMinutes=Xo,un.asHours=Zo,un.asDays=Ko,un.asWeeks=Jo,un.asMonths=Qo,un.asYears=$o,un.valueOf=wi,un._bubble=vi,un.get=xi,un.milliseconds=tn,un.seconds=en,un.minutes=on,un.hours=nn,un.days=sn,un.weeks=Mi,un.months=rn,un.years=an,un.humanize=Ci,un.toISOString=Ei,un.toString=Ei,un.toJSON=Ei,un.locale=ve,un.localeData=ge,un.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ei),un.lang=Do,N("X",0,0,"unix"),N("x",0,0,"valueOf"),R("x",Ki),R("X",Qi),H("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),H("x",function(t,e,i){i._d=new Date(v(t))}),e.version="2.10.3",i(Tt),e.fn=Bo,e.min=Et,e.max=St,e.utc=h,e.unix=Ze,e.months=ai,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=di,e.parseZone=Ke,e.localeData=M,e.isDuration=It,e.monthsShort=hi,e.weekdaysMin=ui,e.defineLocale=k,e.weekdaysShort=li,e.normalizeUnits=D,e.relativeTimeThreshold=Ti;var cn=e;return cn})}).call(e,i(107)(t))},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null,e=!1;return function i(o,n){function s(t){return t.match(/[^ ]+/g)}function r(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0},e.firstTarget=t;for(var o=t;o&&!i;){var n=o.hammer&&o.hammer._handlers[e.type];if(n)for(var s=0;s0?o._handlers[t]=i:(o._off(t,r),delete o._handlers[t]))}),o},o.emit=function(i,n){e||(t=n.target),o._emit(i,n)},o.destroy=function(){var t=o.element;delete t.hammer,o._handlers={},o._destroy()},o}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(f(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o-1}function _(t){return t.trim().split(/\s+/g)}function x(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=z(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=A(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=F(a,h),e.distance=R(a,h),I(i,e),e.offsetDirection=B(e.deltaX,e.deltaY),e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,N(i,e);var d=t.element;b(e.srcEvent.target,d)&&(d=e.srcEvent.target),e.target=d}function I(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};(e.eventType===Ct||s.eventType===St)&&(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function N(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Pt&&(h>Tt||r.velocity===a)){var d=r.deltaX-e.deltaX,l=r.deltaY-e.deltaY,u=L(h,d,l);o=u.x,n=u.y,i=vt(u.x)>vt(u.y)?u.x:u.y,s=B(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function z(t){for(var e=[],i=0;in;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function L(t,e,i){return{x:e/t||0,y:i/t||0}}function B(t,e){return t===e?It:vt(t)>=vt(e)?t>0?Nt:zt:e>0?At:Lt}function R(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function F(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return F(e[1],e[0],Ht)-F(t[1],t[0],Ht)}function H(t,e){return R(e[0],e[1],Ht)/R(t[0],t[1],Ht)}function Y(){this.evEl=Wt,this.evWin=Gt,this.allow=!0,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=qt,this.evWin=Xt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function G(){this.evTarget=Kt,this.evWin=Jt,this.started=!1,C.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(St|Pt)&&(i=M(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=$t,this.targetIds={},C.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(Ct|Et)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return b(t.target,h)}),e===Ct)for(n=0;na&&(e.push(t),a=e.length-1):n&(St|Pt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Zt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},Kt="touchstart",Jt="touchstart touchmove touchend touchcancel";p(G,C,{handler:function(t){var e=Zt[t.type];if(e===Ct&&(this.started=!0),this.started){var i=U.call(this,t,e);e&(St|Pt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}});var Qt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},$t="touchstart touchmove touchend touchcancel";p(V,C,{handler:function(t){var e=Qt[t.type],i=q.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}),p(X,C,{handler:function(t,e,i){var o=i.pointerType==kt,n=i.pointerType==Ot;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(St|Pt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var te=O(pt.style,"touchAction"),ee=te!==a,ie="compute",oe="auto",ne="manipulation",se="none",re="pan-x",ae="pan-y";Z.prototype={set:function(t){t==ie&&(t=this.compute()),ee&&(this.manager.element.style[te]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){ +var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),K(t.join(" "))},preventDefaults:function(t){if(!ee){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=w(o,se),s=w(o,ae),r=w(o,re);return n||s&&i&Bt||r&&i&Rt?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var he=1,de=2,le=4,ue=8,ce=ue,pe=16,fe=32;J.prototype={defaults:{},set:function(t){return u(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=tt(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=tt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=tt(t,this),-1===x(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=tt(t,this);var e=x(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(i.options.event+(e?Q(o):""),t)}var i=this,o=this.state;ue>o&&e(!0),e(),o>=ue&&e(!0)},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=fe)},canEmit:function(){for(var t=0;ts?Nt:zt,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?At:Lt,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return et.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this._super.emit.call(this,t)}}),p(ot,et,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(this._super.emit.call(this,t),1!==t.scale){var e=t.scale<1?"in":"out";this.manager.emit(this.options.event+e,t)}}}),p(nt,J,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(St|Pt)&&!n)this.reset();else if(t.eventType&Ct)this.reset(),this._timer=h(function(){this.state=ce,this.tryEmit()},e.time,this);else if(t.eventType&St)return ce;return fe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===ce&&(t&&t.eventType&St?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),p(st,et,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),p(rt,et,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Bt|Rt,pointers:1},getTouchAction:function(){return it.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Bt|Rt)?e=t.velocity:i&Bt?e=t.velocityX:i&Rt&&(e=t.velocityY),this._super.attrTest.call(this,t)&&i&t.direction&&t.distance>this.options.threshold&&vt(e)>this.options.velocity&&t.eventType&St},emit:function(t){var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(at,J,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ne]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances;s++)for(r=0;rp?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["color","font","fixed","shadow"];if(B.selectiveNotDeepExtend(o,t,e,i),B.mergeOptions(t,e,"shadow"),void 0!==e.color&&null!==e.color){var n=B.parseColor(e.color);B.fillIfDefined(t.color,n)}else i===!0&&null===e.color&&(t.color=void 0,delete t.color);void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&a["default"].parseOptions(t.font,e),void 0!==e.scaling&&B.mergeOptions(t.scaling,e.scaling,"label")}}]),t}();e["default"]=R,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i=this.options.scaling.label.maxVisible&&(r=Number(this.options.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=o(d,2),u=l[0],c=l[1],p=this._setAlignment(t,i,h,s),f=o(p,2);i=f[0],h=f[1],t.font=(e?"bold ":"")+r+"px "+this.options.font.face,t.fillStyle=u,t.textAlign="center",this.options.font.strokeWidth>0&&(t.lineWidth=this.options.font.strokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var m=0;m0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if("horizontal"!==this.options.font.align){e=0,i=0;var n=2;"top"===this.options.font.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.options.font.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.options.font.color||"#000000",i=this.options.font.strokeColor||"#ffffff";if(t<=this.options.scaling.label.drawThreshold){ +var o=Math.max(0,Math.min(1,1-(this.options.scaling.label.drawThreshold-t)));e=r.overrideOpacity(e,o),i=r.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.options.font.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){var i=void 0===arguments[2]?0:arguments[2],o=void 0===arguments[3]?0:arguments[3],n=void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.options.font.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.options.font.size,"hanging"===n&&(this.size.top+=.5*this.options.font.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.options.label){o=String(this.options.label).split("\n"),n=o.length,t.font=(e?"bold ":"")+this.options.font.size+"px "+this.options.font.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2]}else"object"==typeof e.font&&r.fillIfDefined(t,e.font,i);t.size=Number(t.size)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;ii.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["id","from","hidden","hoverWidth","label","length","line","opacity","physics","selectionWidth","selfReferenceSize","to","title","value","width"];if(f.selectiveDeepExtend(o,t,e,i),f.mergeOptions(t,e,"smooth"),f.mergeOptions(t,e,"shadow"),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=void 0,delete t.dashes),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label")):i===!0&&null===e.scaling&&(t.scaling=void 0,delete t.scaling),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var n=e.arrows.toLowerCase();-1!=n.indexOf("to")&&(t.arrows.to.enabled=!0),-1!=n.indexOf("middle")&&(t.arrows.middle.enabled=!0),-1!=n.indexOf("from")&&(t.arrows.from.enabled=!0)}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to"),f.mergeOptions(t.arrows,e.arrows,"middle"),f.mergeOptions(t.arrows,e.arrows,"from")}else i===!0&&null===e.arrows&&(t.arrows=void 0,delete t.arrows);if(void 0!==e.color&&null!==e.color)if(f.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var s=!1;void 0!==e.color.color&&(t.color.color=e.color.color,s=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,s=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,s=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&s===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=void 0,delete t.color);void 0!==e.font&&a["default"].parseOptions(t.font,e)}}]),t}();e["default"]=m,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;o>s;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t),this.overlapAvoidanceFactor<1&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var h=0;o>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=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)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii&&(s=.5*u>i?1:c*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(t,e,i){for(var o=!0;o;){var n=t,s=e,r=i;a=d=h=void 0,o=!1;var a=Object.getOwnPropertyDescriptor(n,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;return void 0===h?void 0:h.call(r)}var d=Object.getPrototypeOf(n);if(null===d)return void 0;t=d,e=s,i=r,o=!0}},a=i(74),h=o(a),d=function(t){function e(t,i,o,s,a){n(this,e),r(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,t,i,o,s,a),this.isCluster=!0,this.containedNodes={},this.containedEdges={}}return s(e,t),e}(h["default"]);e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom}},{key:"configureKeyboardBindings",value:function(){void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",this.bindToRedraw.bind(this,"_moveUp"),"keydown"),this.keycharm.bind("down",this.bindToRedraw.bind(this,"_moveDown"),"keydown"),this.keycharm.bind("left",this.bindToRedraw.bind(this,"_moveLeft"),"keydown"),this.keycharm.bind("right",this.bindToRedraw.bind(this,"_moveRight"),"keydown"),this.keycharm.bind("=",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num+",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("[",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("]",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pageup",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pagedown",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("up",this.unbindFromRedraw.bind(this,"_moveUp"),"keyup"),this.keycharm.bind("down",this.unbindFromRedraw.bind(this,"_moveDown"),"keyup"),this.keycharm.bind("left",this.unbindFromRedraw.bind(this,"_moveLeft"),"keyup"),this.keycharm.bind("right",this.unbindFromRedraw.bind(this,"_moveRight"),"keyup"),this.keycharm.bind("=",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num+",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("[",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("]",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pageup",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pagedown",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup")))}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;io&&(s=o-e-this.padding),sn&&(r=n-i-this.padding),r=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!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;nthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?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*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)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*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.ythis.imageObj.height?(i=this.imageObj.width/this.imageObj.height,t=2*this.options.size*i||this.imageObj.width,e=2*this.options.size||this.imageObj.height):(i=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,t=2*this.options.size||this.imageObj.width,e=2*this.options.size*i||this.imageObj.height),this.width=t,this.height=e,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?a:r,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}},{key:"_drawImageAtPosition",value:function(t){0!=this.imageObj.width&&(t.globalAlpha=1,this.enableShadow(t),t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),this.disableShadow(t))}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.options.label&&(this.labelOffset=s),this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i=l&&h>d;){var m=.5*(l+u);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)r?f===!1?l=m:u=m:f===!1?u=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=void 0,h=void 0;a=r.x,h=r.y;var d=1e9,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=t,v=e;for(u=1;10>u;u++)c=.1*u,p=Math.pow(1-c,2)*t+2*c*(1-c)*a+Math.pow(c,2)*i,f=Math.pow(1-c,2)*e+2*c*(1-c)*h+Math.pow(c,2)*o,u>0&&(l=this._getDistanceToLine(m,v,p,f,n,s),d=d>l?l:d),m=p,v=f;return d}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;io.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),u=this._pointOnCircle(o,n,l,g),c=Math.atan2(t.y-u.y,t.x-u.x),p=t.distanceToBorder(e,c),f=Math.sqrt(Math.pow(u.x-t.x,2)+Math.pow(u.y-t.y,2)),m=p-f,!(Math.abs(m)0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t){var e=this.options.color;if(e.inherit!==!1){if("both"===e.inherit&&this.from.id!==this.to.id){var i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),o=void 0,n=void 0;return o=this.from.options.color.highlight.border,n=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(o=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),n=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?n=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(o=this.from.options.color.border),i.addColorStop(0,o),i.addColorStop(1,n),i}this.colorDirty===!0&&("to"===e.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,e.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,e.opacity)))}else this.colorDirty===!0&&(this.color.highlight=e.highlight,this.color.hover=e.hover,this.color.color=r.overrideOpacity(e.color,e.opacity));return this.colorDirty=!1,this.selected===!0?this.color.highlight:this.hover===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,n,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,n,s,r,a);else{var d=this._getCircleData(),l=o(d,3),u=l[0],c=l[1],p=l[2],f=u-s,m=c-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.lefts&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"drawArrowHead",value:function(t,e,i,n,s){t.strokeStyle=this.getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(n,s);var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0;if("from"===e?(d=this.from,l=this.to,u=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(d=this.to,l=this.from,u=-.1,c=this.options.arrows.to.scaleFactor):(d=this.to,l=this.from,c=this.options.arrows.middle.scaleFactor),d!=l){if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);r=Math.atan2(h.y-p.y,h.x-p.x)}else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.6,i);a=(10+5*this.options.width)*c,t.arrow(h.x,h.y,r,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}else{var f=void 0,m=void 0,v=this._getCircleData(t),g=o(v,3),y=g[0],b=g[1],w=g[2];"from"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),f=-2*m.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),f=-2*m.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(m=this._pointOnCircle(y,b,w,.175),f=3.9269908169872414);var _=(10+5*this.options.width)*c;t.arrow(m.x,m.y,f,_),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a,t.exports=e["default"]}])}); //# sourceMappingURL=vis.map diff --git a/download/vis.zip b/download/vis.zip index f2fb83db..63d43bb6 100644 Binary files a/download/vis.zip and b/download/vis.zip differ