diff --git a/dist/vis.js b/dist/vis.js index 24ddbe78..0424ae84 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -134,11 +134,11 @@ return /******/ (function(modules) { // webpackBootstrap exports.network = { Edge: __webpack_require__(34), Groups: __webpack_require__(35), - Images: __webpack_require__(40), - Node: __webpack_require__(36), - Popup: __webpack_require__(37), - dotparser: __webpack_require__(38), - gephiParser: __webpack_require__(39) + Images: __webpack_require__(36), + Node: __webpack_require__(37), + Popup: __webpack_require__(38), + dotparser: __webpack_require__(39), + gephiParser: __webpack_require__(40) }; // Deprecated since v3.0.0 @@ -6107,7 +6107,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(44); + var Core = __webpack_require__(43); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6408,7 +6408,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(44); + var Core = __webpack_require__(43); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6868,7 +6868,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); + var hammerUtil = __webpack_require__(44); var moment = __webpack_require__(41); var Component = __webpack_require__(18); @@ -14014,16 +14014,16 @@ return /******/ (function(modules) { // webpackBootstrap var Hammer = __webpack_require__(42); var mousetrap = __webpack_require__(51); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); + var hammerUtil = __webpack_require__(44); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var dotparser = __webpack_require__(38); - var gephiParser = __webpack_require__(39); + var dotparser = __webpack_require__(39); + var gephiParser = __webpack_require__(40); var Groups = __webpack_require__(35); - var Images = __webpack_require__(40); - var Node = __webpack_require__(36); + var Images = __webpack_require__(36); + var Node = __webpack_require__(37); var Edge = __webpack_require__(34); - var Popup = __webpack_require__(37); + var Popup = __webpack_require__(38); var MixinLoader = __webpack_require__(48); var Activator = __webpack_require__(49); var locales = __webpack_require__(46); @@ -16502,7 +16502,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(36); + var Node = __webpack_require__(37); /** * @class Edge @@ -17764,6 +17764,64 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 36 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @class Images + * This class loads images and keeps them stored. + */ + function Images() { + this.images = {}; + + this.callback = undefined; + } + + /** + * Set an onload callback function. This will be called each time an image + * is loaded + * @param {function} callback + */ + Images.prototype.setOnloadCallback = function(callback) { + this.callback = callback; + }; + + /** + * + * @param {string} url Url of the image + * @param {string} url Url of an image to use if the url image is not found + * @return {Image} img The image object + */ + Images.prototype.load = function(url, brokenUrl) { + var img = this.images[url]; + if (img == undefined) { + // create the image + var images = this; + img = new Image(); + this.images[url] = img; + img.onload = function() { + if (images.callback) { + images.callback(this); + } + }; + + img.onerror = function () { + this.src = brokenUrl; + if (images.callback) { + images.callback(this); + } + }; + + img.src = url; + } + + return img; + }; + + module.exports = Images; + + +/***/ }, +/* 37 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -18750,7 +18808,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 37 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { /** @@ -18890,7 +18948,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 38 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { /** @@ -19722,7 +19780,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 39 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { @@ -19786,64 +19844,6 @@ return /******/ (function(modules) { // webpackBootstrap exports.parseGephi = parseGephi; -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * @class Images - * This class loads images and keeps them stored. - */ - function Images() { - this.images = {}; - - this.callback = undefined; - } - - /** - * Set an onload callback function. This will be called each time an image - * is loaded - * @param {function} callback - */ - Images.prototype.setOnloadCallback = function(callback) { - this.callback = callback; - }; - - /** - * - * @param {string} url Url of the image - * @param {string} url Url of an image to use if the url image is not found - * @return {Image} img The image object - */ - Images.prototype.load = function(url, brokenUrl) { - var img = this.images[url]; - if (img == undefined) { - // create the image - var images = this; - img = new Image(); - this.images[url] = img; - img.onload = function() { - if (images.callback) { - images.callback(this); - } - }; - - img.onerror = function () { - this.src = brokenUrl; - if (images.callback) { - images.callback(this); - } - }; - - img.src = url; - } - - return img; - }; - - module.exports = Images; - - /***/ }, /* 41 */ /***/ function(module, exports, __webpack_require__) { @@ -19860,7 +19860,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(59); + module.exports = window['Hammer'] || __webpack_require__(53); } else { module.exports = function () { @@ -19871,40 +19871,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 43 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(42); - - /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event - */ - exports.fakeGesture = function(element, event) { - var eventType = null; - - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); - - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); - - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; - } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; - } - - return gesture; - }; - - -/***/ }, -/* 44 */ /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(50); @@ -20722,6 +20688,40 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Core; +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(42); + + /** + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event + */ + exports.fakeGesture = function(element, event) { + var eventType = null; + + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); + + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; + } + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; + } + + return gesture; + }; + + /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { @@ -21020,12 +21020,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(53); - var SectorsMixin = __webpack_require__(54); - var SelectionMixin = __webpack_require__(55); - var ManipulationMixin = __webpack_require__(56); - var NavigationMixin = __webpack_require__(57); - var HierarchicalLayoutMixin = __webpack_require__(58); + var ClusterMixin = __webpack_require__(54); + var SectorsMixin = __webpack_require__(55); + var SelectionMixin = __webpack_require__(56); + var ManipulationMixin = __webpack_require__(57); + var NavigationMixin = __webpack_require__(58); + var HierarchicalLayoutMixin = __webpack_require__(59); /** * Load a mixin into the network object @@ -22351,23 +22351,23 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.7.0 + //! version : 2.8.2 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com (function (undefined) { - /************************************ Constants ************************************/ var moment, - VERSION = "2.7.0", + VERSION = '2.8.2', // the global-scope this is NOT the global object in Node.js globalScope = typeof global !== 'undefined' ? global : this, oldGlobalMoment, round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, i, YEAR = 0, @@ -22378,22 +22378,11 @@ return /******/ (function(modules) { // webpackBootstrap SECOND = 5, MILLISECOND = 6, - // internal storage for language config files - languages = {}, - - // moment internal properties - momentProperties = { - _isAMomentObject: null, - _i : null, - _f : null, - _l : null, - _strict : null, - _tzm : null, - _isUTC : null, - _offset : null, // optional. Combine with _isUTC - _pf : null, - _lang : null // optional - }, + // internal storage for locale config files + locales = {}, + + // extra moment internal properties (plugins register props here) + momentProperties = [], // check for nodeJS hasModule = (typeof module !== 'undefined' && module.exports), @@ -22452,7 +22441,7 @@ return /******/ (function(modules) { // webpackBootstrap ['HH', /(T| )\d\d/] ], - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] parseTimezoneChunker = /([\+\-]|\d\d)/gi, // getter and setter names @@ -22499,12 +22488,11 @@ return /******/ (function(modules) { // webpackBootstrap // default relative time thresholds relativeTimeThresholds = { - s: 45, //seconds to minutes - m: 45, //minutes to hours - h: 22, //hours to days - dd: 25, //days to month (month == 1) - dm: 45, //days to months (months > 1) - dy: 345 //days to year + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }, // tokens to ordinalize and pad @@ -22516,10 +22504,10 @@ return /******/ (function(modules) { // webpackBootstrap return this.month() + 1; }, MMM : function (format) { - return this.lang().monthsShort(this, format); + return this.localeData().monthsShort(this, format); }, MMMM : function (format) { - return this.lang().months(this, format); + return this.localeData().months(this, format); }, D : function () { return this.date(); @@ -22531,13 +22519,13 @@ return /******/ (function(modules) { // webpackBootstrap return this.day(); }, dd : function (format) { - return this.lang().weekdaysMin(this, format); + return this.localeData().weekdaysMin(this, format); }, ddd : function (format) { - return this.lang().weekdaysShort(this, format); + return this.localeData().weekdaysShort(this, format); }, dddd : function (format) { - return this.lang().weekdays(this, format); + return this.localeData().weekdays(this, format); }, w : function () { return this.week(); @@ -22583,10 +22571,10 @@ return /******/ (function(modules) { // webpackBootstrap return this.isoWeekday(); }, a : function () { - return this.lang().meridiem(this.hours(), this.minutes(), true); + return this.localeData().meridiem(this.hours(), this.minutes(), true); }, A : function () { - return this.lang().meridiem(this.hours(), this.minutes(), false); + return this.localeData().meridiem(this.hours(), this.minutes(), false); }, H : function () { return this.hours(); @@ -22614,19 +22602,19 @@ return /******/ (function(modules) { // webpackBootstrap }, Z : function () { var a = -this.zone(), - b = "+"; + b = '+'; if (a < 0) { a = -a; - b = "-"; + b = '-'; } - return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2); + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); }, ZZ : function () { var a = -this.zone(), - b = "+"; + b = '+'; if (a < 0) { a = -a; - b = "-"; + b = '-'; } return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); }, @@ -22644,6 +22632,8 @@ return /******/ (function(modules) { // webpackBootstrap } }, + deprecations = {}, + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; // Pick the first defined of two or three arguments. dfl comes from @@ -22652,10 +22642,14 @@ return /******/ (function(modules) { // webpackBootstrap switch (arguments.length) { case 2: return a != null ? a : b; case 3: return a != null ? a : b != null ? b : c; - default: throw new Error("Implement me"); + default: throw new Error('Implement me'); } } + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } + function defaultParsingFlags() { // We need to deep clone this object, and es5 standard is not very // helpful. @@ -22673,23 +22667,31 @@ return /******/ (function(modules) { // webpackBootstrap }; } + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + function deprecate(msg, fn) { var firstTime = true; - function printMsg() { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn("Deprecation warning: " + msg); - } - } return extend(function () { if (firstTime) { - printMsg(); + printMsg(msg); firstTime = false; } return fn.apply(this, arguments); }, fn); } + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } + function padToken(func, count) { return function (a) { return leftZeroFill(func.call(this, a), count); @@ -22697,7 +22699,7 @@ return /******/ (function(modules) { // webpackBootstrap } function ordinalizeToken(func, period) { return function (a) { - return this.lang().ordinal(func.call(this, a), period); + return this.localeData().ordinal(func.call(this, a), period); }; } @@ -22716,14 +22718,16 @@ return /******/ (function(modules) { // webpackBootstrap Constructors ************************************/ - function Language() { - + function Locale() { } // Moment prototype object - function Moment(config) { - checkOverflow(config); - extend(this, config); + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); } // Duration Constructor @@ -22757,6 +22761,8 @@ return /******/ (function(modules) { // webpackBootstrap this._data = {}; + this._locale = moment.localeData(); + this._bubble(); } @@ -22767,31 +22773,67 @@ return /******/ (function(modules) { // webpackBootstrap function extend(a, b) { for (var i in b) { - if (b.hasOwnProperty(i)) { + if (hasOwnProp(b, i)) { a[i] = b[i]; } } - if (b.hasOwnProperty("toString")) { + if (hasOwnProp(b, 'toString')) { a.toString = b.toString; } - if (b.hasOwnProperty("valueOf")) { + if (hasOwnProp(b, 'valueOf')) { a.valueOf = b.valueOf; } return a; } - function cloneMoment(m) { - var result = {}, i; - for (i in m) { - if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { - result[i] = m[i]; + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } } } - return result; + return to; } function absRound(number) { @@ -22814,7 +22856,51 @@ return /******/ (function(modules) { // webpackBootstrap return (sign ? (forceSign ? '+' : '') : '-') + output; } - // helper function for _.addTime and _.subtractTime + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = duration._days, @@ -22841,8 +22927,8 @@ return /******/ (function(modules) { // webpackBootstrap } function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; } // compare two arrays, return the number of differences @@ -22874,7 +22960,7 @@ return /******/ (function(modules) { // webpackBootstrap prop; for (prop in inputObject) { - if (inputObject.hasOwnProperty(prop)) { + if (hasOwnProp(inputObject, prop)) { normalizedProp = normalizeUnits(prop); if (normalizedProp) { normalizedInput[normalizedProp] = inputObject[prop]; @@ -22902,7 +22988,7 @@ return /******/ (function(modules) { // webpackBootstrap moment[field] = function (format, index) { var i, getter, - method = moment.fn._lang[field], + method = moment._locale[field], results = []; if (typeof format === 'number') { @@ -22912,7 +22998,7 @@ return /******/ (function(modules) { // webpackBootstrap getter = function (i) { var m = moment().utc().set(setter, i); - return method.call(moment.fn._lang, m, format || ''); + return method.call(moment._locale, m, format || ''); }; if (index != null) { @@ -22997,41 +23083,81 @@ return /******/ (function(modules) { // webpackBootstrap return m._isValid; } - function normalizeLanguage(key) { + function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; } - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); - } - - /************************************ - Languages - ************************************/ + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - - extend(Language.prototype, { - - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } + + /************************************ + Locale + ************************************/ + + + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; } else { this['_' + i] = prop; } } }, - _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), months : function (m) { return this._months[m.month()]; }, - _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), monthsShort : function (m) { return this._monthsShort[m.month()]; }, @@ -23057,17 +23183,17 @@ return /******/ (function(modules) { // webpackBootstrap } }, - _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), weekdays : function (m) { return this._weekdays[m.day()]; }, - _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysShort : function (m) { return this._weekdaysShort[m.day()]; }, - _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), weekdaysMin : function (m) { return this._weekdaysMin[m.day()]; }, @@ -23094,11 +23220,11 @@ return /******/ (function(modules) { // webpackBootstrap }, _longDateFormat : { - LT : "h:mm A", - L : "MM/DD/YYYY", - LL : "MMMM D YYYY", - LLL : "MMMM D YYYY LT", - LLLL : "dddd, MMMM D YYYY LT" + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' }, longDateFormat : function (key) { var output = this._longDateFormat[key]; @@ -23140,35 +23266,37 @@ return /******/ (function(modules) { // webpackBootstrap }, _relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' }, + relativeTime : function (number, withoutSuffix, string, isFuture) { var output = this._relativeTime[string]; return (typeof output === 'function') ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); }, + pastFuture : function (diff, output) { var format = this._relativeTime[diff > 0 ? 'future' : 'past']; return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); }, ordinal : function (number) { - return this._ordinal.replace("%d", number); + return this._ordinal.replace('%d', number); }, - _ordinal : "%d", + _ordinal : '%d', preparse : function (string) { return string; @@ -23193,78 +23321,6 @@ return /******/ (function(modules) { // webpackBootstrap } }); - // Loads a language definition into the `languages` cache. The function - // takes a key and optionally values. If not in the browser and no values - // are provided, it will load the language file module. As a convenience, - // this function also returns the language values. - function loadLang(key, values) { - values.abbr = key; - if (!languages[key]) { - languages[key] = new Language(); - } - languages[key].set(values); - return languages[key]; - } - - // Remove a language from the `languages` cache. Mostly useful in tests. - function unloadLang(key) { - delete languages[key]; - } - - // Determines which language definition to use and returns it. - // - // With no parameters, it will return the global language. If you - // pass in a language key, such as 'en', it will return the - // definition for 'en', so long as 'en' has already been loaded using - // moment.lang. - function getLangDefinition(key) { - var i = 0, j, lang, next, split, - get = function (k) { - if (!languages[k] && hasModule) { - try { - __webpack_require__(61)("./" + k); - } catch (e) { } - } - return languages[k]; - }; - - if (!key) { - return moment.fn._lang; - } - - if (!isArray(key)) { - //short-circuit everything else - lang = get(key); - if (lang) { - return lang; - } - key = [key]; - } - - //pick the language from the array - //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - while (i < key.length) { - split = normalizeLanguage(key[i]).split('-'); - j = split.length; - next = normalizeLanguage(key[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - lang = get(split.slice(0, j).join('-')); - if (lang) { - return lang; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return moment.fn._lang; - } - /************************************ Formatting ************************************/ @@ -23272,9 +23328,9 @@ return /******/ (function(modules) { // webpackBootstrap function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ""); + return input.replace(/^\[|\]$/g, ''); } - return input.replace(/\\/g, ""); + return input.replace(/\\/g, ''); } function makeFormatFunction(format) { @@ -23289,7 +23345,7 @@ return /******/ (function(modules) { // webpackBootstrap } return function (mom) { - var output = ""; + var output = ''; for (i = 0; i < length; i++) { output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; } @@ -23299,12 +23355,11 @@ return /******/ (function(modules) { // webpackBootstrap // format date using native date object function formatMoment(m, format) { - if (!m.isValid()) { - return m.lang().invalidDate(); + return m.localeData().invalidDate(); } - format = expandFormat(format, m.lang()); + format = expandFormat(format, m.localeData()); if (!formatFunctions[format]) { formatFunctions[format] = makeFormatFunction(format); @@ -23313,11 +23368,11 @@ return /******/ (function(modules) { // webpackBootstrap return formatFunctions[format](m); } - function expandFormat(format, lang) { + function expandFormat(format, locale) { var i = 5; function replaceLongDateFormatTokens(input) { - return lang.longDateFormat(input) || input; + return locale.longDateFormat(input) || input; } localFormattingTokens.lastIndex = 0; @@ -23358,13 +23413,19 @@ return /******/ (function(modules) { // webpackBootstrap case 'ggggg': return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; case 'S': - if (strict) { return parseTokenOneDigit; } + if (strict) { + return parseTokenOneDigit; + } /* falls through */ case 'SS': - if (strict) { return parseTokenTwoDigits; } + if (strict) { + return parseTokenTwoDigits; + } /* falls through */ case 'SSS': - if (strict) { return parseTokenThreeDigits; } + if (strict) { + return parseTokenThreeDigits; + } /* falls through */ case 'DDD': return parseTokenOneToThreeDigits; @@ -23376,7 +23437,7 @@ return /******/ (function(modules) { // webpackBootstrap return parseTokenWord; case 'a': case 'A': - return getLangDefinition(config._l)._meridiemParse; + return config._locale._meridiemParse; case 'X': return parseTokenTimestampMs; case 'Z': @@ -23413,13 +23474,13 @@ return /******/ (function(modules) { // webpackBootstrap case 'Do': return parseTokenOrdinal; default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); return a; } } function timezoneMinutesFromString(string) { - string = string || ""; + string = string || ''; var possibleTzMatches = (string.match(parseTokenTimezone) || []), tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], @@ -23448,7 +23509,7 @@ return /******/ (function(modules) { // webpackBootstrap break; case 'MMM' : // fall through to MMMM case 'MMMM' : - a = getLangDefinition(config._l).monthsParse(input); + a = config._locale.monthsParse(input); // if we didn't find a month name, mark the date as invalid. if (a != null) { datePartArray[MONTH] = a; @@ -23488,7 +23549,7 @@ return /******/ (function(modules) { // webpackBootstrap // AM / PM case 'a' : // fall through to A case 'A' : - config._isPm = getLangDefinition(config._l).isPM(input); + config._isPm = config._locale.isPM(input); break; // 24 HOUR case 'H' : // fall through to hh @@ -23528,7 +23589,7 @@ return /******/ (function(modules) { // webpackBootstrap case 'dd': case 'ddd': case 'dddd': - a = getLangDefinition(config._l).weekdaysParse(input); + a = config._locale.weekdaysParse(input); // if we didn't get a weekday name, mark the date as invalid if (a != null) { config._w = config._w || {}; @@ -23564,7 +23625,7 @@ return /******/ (function(modules) { // webpackBootstrap } function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, lang; + var w, weekYear, week, weekday, dow, doy, temp; w = config._w; if (w.GG != null || w.W != null || w.E != null) { @@ -23579,9 +23640,8 @@ return /******/ (function(modules) { // webpackBootstrap week = dfl(w.W, 1); weekday = dfl(w.E, 1); } else { - lang = getLangDefinition(config._l); - dow = lang._week.dow; - doy = lang._week.doy; + dow = config._locale._week.dow; + doy = config._locale._week.doy; weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); week = dfl(w.w, 1); @@ -23695,7 +23755,6 @@ return /******/ (function(modules) { // webpackBootstrap // date from string and format string function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { parseISO(config); return; @@ -23705,13 +23764,12 @@ return /******/ (function(modules) { // webpackBootstrap config._pf.empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC` - var lang = getLangDefinition(config._l), - string = '' + config._i, + var string = '' + config._i, i, parsedInput, tokens, token, skipped, stringLength = string.length, totalParsedInputLength = 0; - tokens = expandFormat(config._f, lang).match(formattingTokens) || []; + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; for (i = 0; i < tokens.length; i++) { token = tokens[i]; @@ -23786,7 +23844,7 @@ return /******/ (function(modules) { // webpackBootstrap for (i = 0; i < config._f.length; i++) { currentScore = 0; - tempConfig = extend({}, config); + tempConfig = copyConfig({}, config); tempConfig._pf = defaultParsingFlags(); tempConfig._f = config._f[i]; makeDateFromStringAndFormat(tempConfig); @@ -23822,8 +23880,8 @@ return /******/ (function(modules) { // webpackBootstrap config._pf.iso = true; for (i = 0, l = isoDates.length; i < l; i++) { if (isoDates[i][1].exec(string)) { - // match[5] should be "T" or undefined - config._f = isoDates[i][0] + (match[6] || " "); + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); break; } } @@ -23834,7 +23892,7 @@ return /******/ (function(modules) { // webpackBootstrap } } if (string.match(parseTokenTimezone)) { - config._f += "Z"; + config._f += 'Z'; } makeDateFromStringAndFormat(config); } else { @@ -23852,20 +23910,18 @@ return /******/ (function(modules) { // webpackBootstrap } function makeDateFromInput(config) { - var input = config._i, - matched = aspNetJsonRegex.exec(input); - + var input = config._i, matched; if (input === undefined) { config._d = new Date(); - } else if (matched) { + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { config._d = new Date(+matched[1]); } else if (typeof input === 'string') { makeDateFromString(config); } else if (isArray(input)) { config._a = input.slice(0); dateFromConfig(config); - } else if (isDate(input)) { - config._d = new Date(+input); } else if (typeof(input) === 'object') { dateFromObject(config); } else if (typeof(input) === 'number') { @@ -23896,13 +23952,13 @@ return /******/ (function(modules) { // webpackBootstrap return date; } - function parseWeekday(input, language) { + function parseWeekday(input, locale) { if (typeof input === 'string') { if (!isNaN(input)) { input = parseInt(input, 10); } else { - input = language.weekdaysParse(input); + input = locale.weekdaysParse(input); if (typeof input !== 'number') { return null; } @@ -23917,29 +23973,33 @@ return /******/ (function(modules) { // webpackBootstrap // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { - return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - function relativeTime(milliseconds, withoutSuffix, lang) { - var seconds = round(Math.abs(milliseconds) / 1000), - minutes = round(seconds / 60), - hours = round(minutes / 60), - days = round(hours / 24), - years = round(days / 365), - args = seconds < relativeTimeThresholds.s && ['s', seconds] || + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + + args = seconds < relativeTimeThresholds.s && ['s', seconds] || minutes === 1 && ['m'] || minutes < relativeTimeThresholds.m && ['mm', minutes] || hours === 1 && ['h'] || hours < relativeTimeThresholds.h && ['hh', hours] || days === 1 && ['d'] || - days <= relativeTimeThresholds.dd && ['dd', days] || - days <= relativeTimeThresholds.dm && ['M'] || - days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; - args[3] = milliseconds > 0; - args[4] = lang; + args[3] = +posNegDuration > 0; + args[4] = locale; return substituteTimeAgo.apply({}, args); } @@ -23970,7 +24030,7 @@ return /******/ (function(modules) { // webpackBootstrap daysToDayOfWeek += 7; } - adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); return { week: Math.ceil(adjustedMoment.dayOfYear() / 7), year: adjustedMoment.year() @@ -24000,18 +24060,18 @@ return /******/ (function(modules) { // webpackBootstrap var input = config._i, format = config._f; + config._locale = config._locale || moment.localeData(config._l); + if (input === null || (format === undefined && input === '')) { return moment.invalid({nullInput: true}); } if (typeof input === 'string') { - config._i = input = getLangDefinition().preparse(input); + config._i = input = config._locale.preparse(input); } if (moment.isMoment(input)) { - config = cloneMoment(input); - - config._d = new Date(+input._d); + return new Moment(input, true); } else if (format) { if (isArray(format)) { makeDateFromStringAndArray(config); @@ -24025,12 +24085,12 @@ return /******/ (function(modules) { // webpackBootstrap return new Moment(config); } - moment = function (input, format, lang, strict) { + moment = function (input, format, locale, strict) { var c; - if (typeof(lang) === "boolean") { - strict = lang; - lang = undefined; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } // object construction must be done this way. // https://github.com/moment/moment/issues/1423 @@ -24038,7 +24098,7 @@ return /******/ (function(modules) { // webpackBootstrap c._isAMomentObject = true; c._i = input; c._f = format; - c._l = lang; + c._l = locale; c._strict = strict; c._isUTC = false; c._pf = defaultParsingFlags(); @@ -24049,13 +24109,14 @@ return /******/ (function(modules) { // webpackBootstrap moment.suppressDeprecationWarnings = false; moment.createFromInputFallback = deprecate( - "moment construction falls back to js Date. This is " + - "discouraged and will be removed in upcoming major " + - "release. Please refer to " + - "https://github.com/moment/moment/issues/1407 for more info.", - function (config) { - config._d = new Date(config._i); - }); + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i); + } + ); // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. @@ -24092,12 +24153,12 @@ return /******/ (function(modules) { // webpackBootstrap }; // creating with utc - moment.utc = function (input, format, lang, strict) { + moment.utc = function (input, format, locale, strict) { var c; - if (typeof(lang) === "boolean") { - strict = lang; - lang = undefined; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } // object construction must be done this way. // https://github.com/moment/moment/issues/1423 @@ -24105,7 +24166,7 @@ return /******/ (function(modules) { // webpackBootstrap c._isAMomentObject = true; c._useUTC = true; c._isUTC = true; - c._l = lang; + c._l = locale; c._i = input; c._f = format; c._strict = strict; @@ -24126,7 +24187,8 @@ return /******/ (function(modules) { // webpackBootstrap match = null, sign, ret, - parseIso; + parseIso, + diffRes; if (moment.isDuration(input)) { duration = { @@ -24142,7 +24204,7 @@ return /******/ (function(modules) { // webpackBootstrap duration.milliseconds = input; } } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === "-") ? -1 : 1; + sign = (match[1] === '-') ? -1 : 1; duration = { y: 0, d: toInt(match[DATE]) * sign, @@ -24152,7 +24214,7 @@ return /******/ (function(modules) { // webpackBootstrap ms: toInt(match[MILLISECOND]) * sign }; } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === "-") ? -1 : 1; + sign = (match[1] === '-') ? -1 : 1; parseIso = function (inp) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. @@ -24170,12 +24232,19 @@ return /******/ (function(modules) { // webpackBootstrap s: parseIso(match[7]), w: parseIso(match[8]) }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } ret = new Duration(duration); - if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { - ret._lang = input._lang; + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } return ret; @@ -24199,46 +24268,99 @@ return /******/ (function(modules) { // webpackBootstrap moment.updateOffset = function () {}; // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function(threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - relativeTimeThresholds[threshold] = limit; - return true; + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; }; - // This function will load languages and then set the global language. If + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); + + // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global - // language key. - moment.lang = function (key, values) { - var r; - if (!key) { - return moment.fn._lang._abbr; - } - if (values) { - loadLang(normalizeLanguage(key), values); - } else if (values === null) { - unloadLang(key); - key = 'en'; - } else if (!languages[key]) { - getLangDefinition(key); - } - r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); - return r._abbr; + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } + } + + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } }; - // returns language data - moment.langData = function (key) { - if (key && key._lang && key._lang._abbr) { - key = key._lang._abbr; + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); } - return getLangDefinition(key); + ); + + // returns locale data + moment.localeData = function (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return moment._locale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); }; // compare moment object moment.isMoment = function (obj) { return obj instanceof Moment || - (obj != null && obj.hasOwnProperty('_isAMomentObject')); + (obj != null && hasOwnProp(obj, '_isAMomentObject')); }; // for typechecking Duration objects @@ -24294,7 +24416,7 @@ return /******/ (function(modules) { // webpackBootstrap }, toString : function () { - return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); }, toDate : function () { @@ -24328,7 +24450,6 @@ return /******/ (function(modules) { // webpackBootstrap }, isDSTShifted : function () { - if (this._a) { return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; } @@ -24344,48 +24465,30 @@ return /******/ (function(modules) { // webpackBootstrap return this._pf.overflow; }, - utc : function () { - return this.zone(0); + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); }, - local : function () { - this.zone(0); - this._isUTC = false; + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.add(this._d.getTimezoneOffset(), 'm'); + } + } return this; }, format : function (inputString) { var output = formatMoment(this, inputString || moment.defaultFormat); - return this.lang().postformat(output); + return this.localeData().postformat(output); }, - add : function (input, val) { - var dur; - // switch args to support add('s', 1) and add(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, 1); - return this; - }, + add : createAdder(1, 'add'), - subtract : function (input, val) { - var dur; - // switch args to support subtract('s', 1) and subtract(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, -1); - return this; - }, + subtract : createAdder(-1, 'subtract'), diff : function (input, units, asFloat) { var that = makeAs(input, this), @@ -24422,7 +24525,7 @@ return /******/ (function(modules) { // webpackBootstrap }, from : function (time, withoutSuffix) { - return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); }, fromNow : function (withoutSuffix) { @@ -24441,7 +24544,7 @@ return /******/ (function(modules) { // webpackBootstrap diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.lang().calendar(format, this)); + return this.format(this.localeData().calendar(format, this)); }, isLeapYear : function () { @@ -24456,8 +24559,8 @@ return /******/ (function(modules) { // webpackBootstrap day : function (input) { var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); if (input != null) { - input = parseWeekday(input, this.lang()); - return this.add({ d : input - day }); + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); } else { return day; } @@ -24465,7 +24568,7 @@ return /******/ (function(modules) { // webpackBootstrap month : makeAccessor('Month', true), - startOf: function (units) { + startOf : function (units) { units = normalizeUnits(units); // the following switch intentionally omits break keywords // to utilize falling through the cases. @@ -24510,7 +24613,7 @@ return /******/ (function(modules) { // webpackBootstrap endOf: function (units) { units = normalizeUnits(units); - return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); }, isAfter: function (input, units) { @@ -24529,7 +24632,7 @@ return /******/ (function(modules) { // webpackBootstrap }, min: deprecate( - "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', function (other) { other = moment.apply(null, arguments); return other < this ? this : other; @@ -24537,36 +24640,43 @@ return /******/ (function(modules) { // webpackBootstrap ), max: deprecate( - "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', function (other) { other = moment.apply(null, arguments); return other > this ? this : other; } ), - // keepTime = true means only change the timezone, without affecting - // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200 - // It is possible that 5:31:26 doesn't exist int zone +0200, so we - // adjust the time as needed, to be valid. + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. // // Keeping the time actually adds/subtracts (one hour) // from the actual represented time. That is why we call updateOffset // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. - zone : function (input, keepTime) { - var offset = this._offset || 0; + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; if (input != null) { - if (typeof input === "string") { + if (typeof input === 'string') { input = timezoneMinutesFromString(input); } if (Math.abs(input) < 16) { input = input * 60; } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._d.getTimezoneOffset(); + } this._offset = input; this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } if (offset !== input) { - if (!keepTime || this._changeInProgress) { + if (!keepLocalTime || this._changeInProgress) { addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, false); } else if (!this._changeInProgress) { @@ -24582,11 +24692,11 @@ return /******/ (function(modules) { // webpackBootstrap }, zoneAbbr : function () { - return this._isUTC ? "UTC" : ""; + return this._isUTC ? 'UTC' : ''; }, zoneName : function () { - return this._isUTC ? "Coordinated Universal Time" : ""; + return this._isUTC ? 'Coordinated Universal Time' : ''; }, parseZone : function () { @@ -24615,7 +24725,7 @@ return /******/ (function(modules) { // webpackBootstrap dayOfYear : function (input) { var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); }, quarter : function (input) { @@ -24623,28 +24733,28 @@ return /******/ (function(modules) { // webpackBootstrap }, weekYear : function (input) { - var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; - return input == null ? year : this.add("y", (input - year)); + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); }, isoWeekYear : function (input) { var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add("y", (input - year)); + return input == null ? year : this.add((input - year), 'y'); }, week : function (input) { - var week = this.lang().week(this); - return input == null ? week : this.add("d", (input - week) * 7); + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); }, isoWeek : function (input) { var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add("d", (input - week) * 7); + return input == null ? week : this.add((input - week) * 7, 'd'); }, weekday : function (input) { - var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; - return input == null ? weekday : this.add("d", input - weekday); + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); }, isoWeekday : function (input) { @@ -24659,7 +24769,7 @@ return /******/ (function(modules) { // webpackBootstrap }, weeksInYear : function () { - var weekInfo = this._lang._week; + var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); }, @@ -24676,16 +24786,32 @@ return /******/ (function(modules) { // webpackBootstrap return this; }, - // If passed a language key, it will set the language for this - // instance. Otherwise, it will return the language configuration + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration // variables for this instance. - lang : function (key) { + locale : function (key) { if (key === undefined) { - return this._lang; + return this._locale._abbr; } else { - this._lang = getLangDefinition(key); + this._locale = moment.localeData(key); return this; } + }, + + lang : deprecate( + 'moment().lang() is deprecated. Use moment().localeData() instead.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + this._locale = moment.localeData(key); + return this; + } + } + ), + + localeData : function () { + return this._locale; } }); @@ -24694,7 +24820,7 @@ return /******/ (function(modules) { // webpackBootstrap // TODO: Move this out of here! if (typeof value === 'string') { - value = mom.lang().monthsParse(value); + value = mom.localeData().monthsParse(value); // TODO: Another silent failure? if (typeof value !== 'number') { return mom; @@ -24741,9 +24867,9 @@ return /******/ (function(modules) { // webpackBootstrap moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); // moment.fn.month is defined separately moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate("dates accessor is deprecated. Use date instead.", makeAccessor('Date', true)); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate("years accessor is deprecated. Use year instead.", makeAccessor('FullYear', true)); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); // add plural methods moment.fn.days = moment.fn.day; @@ -24760,6 +24886,17 @@ return /******/ (function(modules) { // webpackBootstrap ************************************/ + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + extend(moment.duration.fn = Duration.prototype, { _bubble : function () { @@ -24767,7 +24904,7 @@ return /******/ (function(modules) { // webpackBootstrap days = this._days, months = this._months, data = this._data, - seconds, minutes, hours, years; + seconds, minutes, hours, years = 0; // The following code bubbles up values, see the tests for // examples of what that means. @@ -24783,15 +24920,40 @@ return /******/ (function(modules) { // webpackBootstrap data.hours = hours % 24; days += absRound(hours / 24); - data.days = days % 30; + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. months += absRound(days / 30); - data.months = months % 12; + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - years = absRound(months / 12); + data.days = days; + data.months = months; data.years = years; }, + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + weeks : function () { return absRound(this.days() / 7); }, @@ -24804,14 +24966,13 @@ return /******/ (function(modules) { // webpackBootstrap }, humanize : function (withSuffix) { - var difference = +this, - output = relativeTime(difference, !withSuffix, this.lang()); + var output = relativeTime(this, !withSuffix, this.localeData()); if (withSuffix) { - output = this.lang().pastFuture(difference, output); + output = this.localeData().pastFuture(+this, output); } - return this.lang().postformat(output); + return this.localeData().postformat(output); }, add : function (input, val) { @@ -24845,13 +25006,39 @@ return /******/ (function(modules) { // webpackBootstrap }, as : function (units) { + var days, months; units = normalizeUnits(units); - return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); + + days = this._days + this._milliseconds / 864e5; + if (units === 'month' || units === 'year') { + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + days += yearsToDays(this._months / 12); + switch (units) { + case 'week': return days / 7; + case 'day': return days; + case 'hour': return days * 24; + case 'minute': return days * 24 * 60; + case 'second': return days * 24 * 60 * 60; + case 'millisecond': return days * 24 * 60 * 60 * 1000; + default: throw new Error('Unknown unit ' + units); + } + } }, lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - toIsoString : function () { + toISOString : function () { // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js var years = Math.abs(this.years()), months = Math.abs(this.months()), @@ -24875,41 +25062,59 @@ return /******/ (function(modules) { // webpackBootstrap (hours ? hours + 'H' : '') + (minutes ? minutes + 'M' : '') + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; } }); + moment.duration.fn.toString = moment.duration.fn.toISOString; + function makeDurationGetter(name) { moment.duration.fn[name] = function () { return this._data[name]; }; } - function makeDurationAsGetter(name, factor) { - moment.duration.fn['as' + name] = function () { - return +this / factor; - }; - } - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationAsGetter(i, unitMillisecondFactors[i]); + if (hasOwnProp(unitMillisecondFactors, i)) { makeDurationGetter(i.toLowerCase()); } } - makeDurationAsGetter('Weeks', 6048e5); + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; moment.duration.fn.asMonths = function () { - return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); }; - /************************************ - Default Lang + Default Locale ************************************/ - // Set default language, other languages will inherit from English. - moment.lang('en', { + // Set default locale, other locale will inherit from English. + moment.locale('en', { ordinal : function (number) { var b = number % 10, output = (toInt(number % 100 / 10) === 1) ? 'th' : @@ -24920,7 +25125,7 @@ return /******/ (function(modules) { // webpackBootstrap } }); - /* EMBED_LANGUAGES */ + /* EMBED_LOCALES */ /************************************ Exposing Moment @@ -24934,9 +25139,9 @@ return /******/ (function(modules) { // webpackBootstrap oldGlobalMoment = globalScope.moment; if (shouldDeprecate) { globalScope.moment = deprecate( - "Accessing Moment through the global scope is " + - "deprecated, and will be removed in an upcoming " + - "release.", + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', moment); } else { globalScope.moment = moment; @@ -24947,14 +25152,14 @@ return /******/ (function(modules) { // webpackBootstrap if (hasModule) { module.exports = moment; } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, module) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { if (module.config && module.config() && module.config().noGlobal === true) { // release the global variable globalScope.moment = oldGlobalMoment; } return moment; - }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); makeGlobal(true); } else { makeGlobal(); @@ -24967,5754 +25172,5754 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - /** - * Creation of the ClusterMixin var. + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js * - * This contains all the functions the Network object can use to employ clustering - */ - - /** - * This is only called in the constructor of the network object - * - */ - exports.startWithClustering = function() { - // cluster if the data set is big - this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - - // updates the lables after clustering - this.updateLabels(); + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - // this is called here because if clusterin is disabled, the start and stabilize are called in - // the setData function. - if (this.stabilize) { - this._stabilize(); - } - this.start(); - }; + (function(window, undefined) { + 'use strict'; /** - * This function clusters until the initialMaxNodes has been reached + * @main + * @module hammer * - * @param {Number} maxNumberOfNodes - * @param {Boolean} reposition + * @class Hammer + * @static */ - exports.clusterToFit = function(maxNumberOfNodes, reposition) { - var numberOfNodes = this.nodeIndices.length; - - var maxLevels = 50; - var level = 0; - - // we first cluster the hubs, then we pull in the outliers, repeat - while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { - if (level % 3 == 0) { - this.forceAggregateHubs(true); - this.normalizeClusterLevels(); - } - else { - this.increaseClusterLevel(); // this also includes a cluster normalization - } - - numberOfNodes = this.nodeIndices.length; - level += 1; - } - - // after the clustering we reposition the nodes to reduce the initial chaos - if (level > 0 && reposition == true) { - this.repositionNodes(); - } - this._updateCalculationNodes(); - }; /** - * This function can be called to open up a specific cluster. It is only called by - * It will unpack the cluster back one level. + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` * - * @param node | Node object: cluster to open. + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} */ - exports.openCluster = function(node) { - var isMovingBeforeClustering = this.moving; - if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && - !(this._sector() == "default" && this.nodeIndices.length == 1)) { - // this loads a new sector, loads the nodes and edges and nodeIndices of it. - this._addSector(node); - var level = 0; - - // we decluster until we reach a decent number of nodes - while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { - this.decreaseClusterLevel(); - level += 1; - } - - } - else { - this._expandClusterNode(node,false,true); - - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this._updateCalculationNodes(); - this.updateLabels(); - } - - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - }; - - - /** - * This calls the updateClustes with default arguments - */ - exports.updateClustersDefault = function() { - if (this.constants.clustering.enabled == true) { - this.updateClusters(0,false,false); - } - }; - - - /** - * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will - * be clustered with their connected node. This can be repeated as many times as needed. - * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. - */ - exports.increaseClusterLevel = function() { - this.updateClusters(-1,false,true); + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); }; - /** - * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will - * be unpacked if they are a cluster. This can be repeated as many times as needed. - * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} */ - exports.decreaseClusterLevel = function() { - this.updateClusters(1,false,true); - }; - + Hammer.VERSION = '1.1.3'; /** - * This is the main clustering function. It clusters and declusters on zoom or forced - * This function clusters on zoom, it can be called with a predefined zoom direction - * If out, check if we can form clusters, if in, check if we can open clusters. - * This function is only called from _zoom() - * - * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn - * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} doNotStart | if true do not call start - * + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} */ - exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; - - // on zoom out collapse the sector if the scale is at the level the sector was made - if (this.previousScale > this.scale && zoomDirection == 0) { - this._collapseSector(); - } - - // check if we zoom in or out - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - // forming clusters when forced pulls outliers in. When not forced, the edge length of the - // outer nodes determines if it is being clustered - this._formClusters(force); - } - else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in - if (force == true) { - // _openClusters checks for each node if the formationScale of the cluster is smaller than - // the current scale and if so, declusters. When forced, all clusters are reduced by one step - this._openClusters(recursive,force); - } - else { - // if a cluster takes up a set percentage of the active window - this._openClustersBySize(); - } - } - this._updateNodeIndexList(); - - // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs - if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { - this._aggregateHubs(force); - this._updateNodeIndexList(); - } + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - // we now reduce chains. - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - this.handleChains(); - this._updateNodeIndexList(); - } + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - this.previousScale = this.scale; + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // rest of the update the index list, dynamic edges and labels - this._updateDynamicEdges(); - this.updateLabels(); + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place - this.clusterSession += 1; - // if clusters have been made, we normalize the cluster level - this.normalizeClusterLevels(); - } + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } - } - - this._updateCalculationNodes(); }; /** - * This function handles the chains. It is called on every updateClusters(). + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document */ - exports.handleChains = function() { - // after clustering we check how many chains there are - var chainPercentage = this._getChainFraction(); - if (chainPercentage > this.constants.clustering.chainThreshold) { - this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) + Hammer.DOCUMENT = document; - } - }; + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; /** - * this functions starts clustering by hubs - * The minimum hub threshold is set globally - * - * @private + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} */ - exports._aggregateHubs = function(force) { - this._getHubSize(); - this._formClustersByHub(force,false); - }; + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); /** - * This function is fired by keypress. It forces hubs to form. - * + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} */ - exports.forceAggregateHubs = function(doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - this._aggregateHubs(true); - - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this.updateLabels(); - - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } - - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - } - }; + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; /** - * If a cluster takes up more than a set percentage of the screen, open the cluster - * + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES * @private + * @writeOnce + * @type {Object} */ - exports._openClustersBySize = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.inView() == true) { - if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - this.openCluster(node); - } - } - } - } - }; - + var EVENT_TYPES = {}; /** - * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it - * has to be opened based on the current zoom level. - * - * @private + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' */ - exports._openClusters = function(recursive,force) { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - this._expandClusterNode(node,recursive,force); - this._updateCalculationNodes(); - } - }; + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; /** - * This function checks if a node has to be opened. This is done by checking the zoom level. - * If the node contains child nodes, this function is recursively called on the child nodes as well. - * This recursive behaviour is optional and can be set by the recursive argument. - * - * @param {Node} parentNode | to check for cluster and expand - * @param {Boolean} recursive | enabled or disable recursive calling - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released - * @private + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' */ - exports._expandClusterNode = function(parentNode, recursive, force, openAll) { - // first check if node is a cluster - if (parentNode.clusterSize > 1) { - // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 - if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { - openAll = true; - } - recursive = openAll ? true : recursive; - - // if the last child has been added on a smaller scale than current scale decluster - if (parentNode.formationScale < this.scale || force == true) { - // we will check if any of the contained child nodes should be removed from the cluster - for (var containedNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { - var childNode = parentNode.containedNodes[containedNodeId]; - - // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that - // the largest cluster is the one that comes from outside - if (force == true) { - if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] - || openAll) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - else { - if (this._nodeInActiveArea(parentNode)) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - } - } - } - } - }; + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; /** - * ONLY CALLED FROM _expandClusterNode - * - * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove - * the child node from the parent contained_node object and put it back into the global nodes object. - * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. - * - * @param {Node} parentNode | the parent node - * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node - * @param {Boolean} recursive | This will also check if the child needs to be expanded. - * With force and recursive both true, the entire cluster is unpacked - * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent - * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released - * @private + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' */ - exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { - var childNode = parentNode.containedNodes[containedNodeId]; - - // if child node has been added on smaller scale than current, kick out - if (childNode.formationScale < this.scale || force == true) { - // unselect all selected items - this._unselectAll(); - - // put the child node back in the global nodes object - this.nodes[containedNodeId] = childNode; - - // release the contained edges from this childNode back into the global edges - this._releaseContainedEdges(parentNode,childNode); - - // reconnect rerouted edges to the childNode - this._connectEdgeBackToChild(parentNode,childNode); - - // validate all edges in dynamicEdges - this._validateEdges(parentNode); + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - // undo the changes from the clustering operation on the parent node - parentNode.options.mass -= childNode.options.mass; - parentNode.clusterSize -= childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); - parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // place the child node near the parent, not at the exact same location to avoid chaos in the system - childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); - childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - // remove node from the list - delete parentNode.containedNodes[containedNodeId]; + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - // check if there are other childs with this clusterSession in the parent. - var othersPresent = false; - for (var childNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { - if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { - othersPresent = true; - break; - } - } - } - // if there are no others, remove the cluster session from the list - if (othersPresent == false) { - parentNode.clusterSessions.pop(); + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - this._repositionBezierNodes(childNode); - // this._repositionBezierNodes(parentNode); - - // remove the clusterSession from the child node - childNode.clusterSession = 0; - - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); - - // restart the simulation to reorganise all nodes - this.moving = true; - } - - // check if a further expansion step is possible if recursivity is enabled - if (recursive == true) { - this._expandClusterNode(childNode,recursive,force,openAll); - } - }; + // find what eventtypes we add listeners to + Event.determineEventTypes(); + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - /** - * position the bezier nodes at the center of the edges - * - * @param node - * @private - */ - exports._repositionBezierNodes = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - node.dynamicEdges[i].positionBezierNode(); - } - }; + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // Hammer is ready...! + Hammer.READY = true; + } /** - * This function checks if any nodes at the end of their trees have edges below a threshold length - * This function is called only from updateClusters() - * forceLevelCollapse ignores the length of the edge and collapses one level - * This means that a node with only one edge will be clustered with its connected node + * @module hammer * - * @private - * @param {Boolean} force + * @class Utils + * @static */ - exports._formClusters = function(force) { - if (force == false) { - this._formClustersByZoom(); - } - else { - this._forceClustersByZoom(); - } - }; - - - /** - * This function handles the clustering by zooming out, this is based on a minimum edge distance - * - * @private - */ - exports._formClustersByZoom = function() { - var dx,dy,length, - minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, - // check if any edges are shorter than minLength and start the clustering - // the clustering favours the node with the larger mass - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - if (length < minLength) { - // first check which node is larger - var parentNode = edge.from; - var childNode = edge.to; - if (edge.to.options.mass > edge.from.options.mass) { - parentNode = edge.to; - childNode = edge.from; - } + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - if (childNode.dynamicEdgesLength == 1) { - this._addToCluster(parentNode,childNode,false); + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } } - else if (parentNode.dynamicEdgesLength == 1) { - this._addToCluster(childNode,parentNode,false); + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } } - } } - } - } - } - }; - - /** - * This function forces the network to cluster all nodes with only one connecting edge to their - * connected node. - * - * @private - */ - exports._forceClustersByZoom = function() { - for (var nodeId in this.nodes) { - // another node could have absorbed this child. - if (this.nodes.hasOwnProperty(nodeId)) { - var childNode = this.nodes[nodeId]; + }, - // the edges can be swallowed by another decrease - if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { - var edge = childNode.dynamicEdges[0]; - var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // group to the largest node - if (childNode.id != parentNode.id) { - if (parentNode.options.mass > childNode.options.mass) { - this._addToCluster(parentNode,childNode,true); - } - else { - this._addToCluster(childNode,parentNode,true); - } + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } - } - } - } - }; + }, + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - /** - * To keep the nodes of roughly equal size we normalize the cluster levels. - * This function clusters a node to its smallest connected neighbour. - * - * @param node - * @private - */ - exports._clusterToSmallestNeighbour = function(node) { - var smallestNeighbour = -1; - var smallestNeighbourNode = null; - for (var i = 0; i < node.dynamicEdges.length; i++) { - if (node.dynamicEdges[i] !== undefined) { - var neighbour = null; - if (node.dynamicEdges[i].fromId != node.id) { - neighbour = node.dynamicEdges[i].from; - } - else if (node.dynamicEdges[i].toId != node.id) { - neighbour = node.dynamicEdges[i].to; - } + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { - smallestNeighbour = neighbour.clusterSessions.length; - smallestNeighbourNode = neighbour; - } - } - } + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } - if (neighbour != null && this.nodes[neighbour.id] !== undefined) { - this._addToCluster(neighbour, node, true); - } - }; + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - /** - * This function forms clusters from hubs, it loops over all nodes - * - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @private - */ - exports._formClustersByHub = function(force, onlyEqual) { - // we loop over all nodes in the list - for (var nodeId in this.nodes) { - // we check if it is still available since it can be used by the clustering in this loop - if (this.nodes.hasOwnProperty(nodeId)) { - this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); - } - } - }; + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - /** - * This function forms a cluster from a specific preselected hub node - * - * @param {Node} hubNode | the node we will cluster as a hub - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @param {Number} [absorptionSizeOffset] | - * @private - */ - exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { - if (absorptionSizeOffset === undefined) { - absorptionSizeOffset = 0; - } - // we decide if the node is a hub - if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || - (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { - // initialize variables - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var allowCluster = false; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - // we create a list of edges because the dynamicEdges change over the course of this loop - var edgesIdarray = []; - var amountOfInitialEdges = hubNode.dynamicEdges.length; - for (var j = 0; j < amountOfInitialEdges; j++) { - edgesIdarray.push(hubNode.dynamicEdges[j].id); - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - // if the hub clustering is not forces, we check if one of the edges connected - // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold - if (force == false) { - allowCluster = false; - for (j = 0; j < amountOfInitialEdges; j++) { - var edge = this.edges[edgesIdarray[j]]; - if (edge !== undefined) { - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - if (length < minLength) { - allowCluster = true; - break; - } - } - } + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } - } - } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - // start the clustering if allowed - if ((!force && allowCluster) || force) { - // we loop over all edges INITIALLY connected to this hub - for (j = 0; j < amountOfInitialEdges; j++) { - edge = this.edges[edgesIdarray[j]]; - // the edge can be clustered by this function in a previous loop - if (edge !== undefined) { - var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; - // we do not want hubs to merge with other hubs nor do we want to cluster itself. - if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && - (childNode.id != hubNode.id)) { - this._addToCluster(hubNode,childNode,force); - } - } - } - } - } - }; + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + return Math.sqrt((x * x) + (y * y)); + }, + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - /** - * This function adds the child node to the parent node, creating a cluster if it is not already. - * - * @param {Node} parentNode | this is the node that will house the child node - * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node - * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse - * @private - */ - exports._addToCluster = function(parentNode, childNode, force) { - // join child node in the parent node - parentNode.containedNodes[childNode.id] = childNode; + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < childNode.dynamicEdges.length; i++) { - var edge = childNode.dynamicEdges[i]; - if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode - this._addToContainedEdges(parentNode,childNode,edge); - } - else { - this._connectEdgeToCluster(parentNode,childNode,edge); - } - } - // a contained node has no dynamic edges. - childNode.dynamicEdges = []; + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - // remove circular edges from clusters - this._containCircularEdgesFromNode(parentNode,childNode); + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - // remove the childNode from the global nodes object - delete this.nodes[childNode.id]; + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - // update the properties of the child and parent - var massBefore = parentNode.options.mass; - childNode.clusterSession = this.clusterSession; - parentNode.options.mass += childNode.options.mass; - parentNode.clusterSize += childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - // keep track of the clustersessions so we can open the cluster up as it has been formed. - if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { - parentNode.clusterSessions.push(this.clusterSession); - } + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - // forced clusters only open from screen size and double tap - if (force == true) { - // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); - parentNode.formationScale = 0; - } - else { - parentNode.formationScale = this.scale; // The latest child has been added on this scale - } - - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); - - // set the pop-out scale for the childnode - parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; - - // nullify the movement velocity of the child, this is to avoid hectic behaviour - childNode.clearVelocity(); + var falseFn = toggle && function() { + return false; + }; - // the mass has altered, preservation of energy dictates the velocity to be updated - parentNode.updateVelocity(massBefore); + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, - // restart the simulation to reorganise all nodes - this.moving = true; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); + } }; /** - * This function will apply the changes made to the remainingEdges during the formation of the clusters. - * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. - * It has to be called if a level is collapsed. It is called by _formClusters(). - * @private + * @module hammer */ - exports._updateDynamicEdges = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - node.dynamicEdgesLength = node.dynamicEdges.length; - - // this corrects for multiple edges pointing at the same other node - var correction = 0; - if (node.dynamicEdgesLength > 1) { - for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { - var edgeToId = node.dynamicEdges[j].toId; - var edgeFromId = node.dynamicEdges[j].fromId; - for (var k = j+1; k < node.dynamicEdgesLength; k++) { - if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || - (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { - correction += 1; - } - } - } - } - node.dynamicEdgesLength -= correction; - } - }; - - /** - * This adds an edge from the childNode to the contained edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private + * @class Event + * @static */ - exports._addToContainedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { - parentNode.containedEdges[childNode.id] = [] - } - // add this edge to the list - parentNode.containedEdges[childNode.id].push(edge); + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - // remove the edge from the global edges object - delete this.edges[edge.id]; + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - // remove the edge from the parent object - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - if (parentNode.dynamicEdges[i].id == edge.id) { - parentNode.dynamicEdges.splice(i,1); - break; - } - } - }; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - /** - * This function connects an edge that was connected to a child node to the parent node. - * It keeps track of which nodes it has been connected to with the originalId array. - * - * @param {Node} parentNode | Node object - * @param {Node} childNode | Node object - * @param {Edge} edge | Edge object - * @private - */ - exports._connectEdgeToCluster = function(parentNode, childNode, edge) { - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - else { - if (edge.toId == childNode.id) { // edge connected to other node on the "to" side - edge.originalToId.push(childNode.id); - edge.to = parentNode; - edge.toId = parentNode.id; - } - else { // edge connected to other node with the "from" side + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - edge.originalFromId.push(childNode.id); - edge.from = parentNode; - edge.fromId = parentNode.id; - } + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - this._addToReroutedEdges(parentNode,childNode,edge); - } - }; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - /** - * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain - * these edges inside of the cluster. - * - * @param parentNode - * @param childNode - * @private - */ - exports._containCircularEdgesFromNode = function(parentNode, childNode) { - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - } - }; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - /** - * This adds an edge from the childNode to the rerouted edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToReroutedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - // we store the edge in the rerouted edges so we can restore it when the cluster pops open - if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { - parentNode.reroutedEdges[childNode.id] = []; - } - parentNode.reroutedEdges[childNode.id].push(edge); + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // this edge becomes part of the dynamicEdges of the cluster node - parentNode.dynamicEdges.push(edge); - }; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - /** - * This function connects an edge that was connected to a cluster node back to the child node. - * - * @param parentNode | Node object - * @param childNode | Node object - * @private - */ - exports._connectEdgeBackToChild = function(parentNode, childNode) { - if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { - for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { - var edge = parentNode.reroutedEdges[childNode.id][i]; - if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { - edge.originalFromId.pop(); - edge.fromId = childNode.id; - edge.from = childNode; - } - else { - edge.originalToId.pop(); - edge.toId = childNode.id; - edge.to = childNode; - } + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - // append this edge to the list of edges connecting to the childnode - childNode.dynamicEdges.push(edge); + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - // remove the edge from the parent object - for (var j = 0; j < parentNode.dynamicEdges.length; j++) { - if (parentNode.dynamicEdges[j].id == edge.id) { - parentNode.dynamicEdges.splice(j,1); - break; - } - } - } - // remove the entry from the rerouted edges - delete parentNode.reroutedEdges[childNode.id]; - } - }; + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - /** - * When loops are clustered, an edge can be both in the rerouted array and the contained array. - * This function is called last to verify that all edges in dynamicEdges are in fact connected to the - * parentNode - * - * @param parentNode | Node object - * @private - */ - exports._validateEdges = function(parentNode) { - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { - parentNode.dynamicEdges.splice(i,1); - } - } - }; + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + // detection has been started, we keep track of this, see above + this.started = true; - /** - * This function released the contained edges back into the global domain and puts them back into the - * dynamic edges of both parent and child. - * - * @param {Node} parentNode | - * @param {Node} childNode | - * @private - */ - exports._releaseContainedEdges = function(parentNode, childNode) { - for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { - var edge = parentNode.containedEdges[childNode.id][i]; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - // put the edge back in the global edges object - this.edges[edge.id] = edge; + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - // put the edge back in the dynamic edges of the child and parent - childNode.dynamicEdges.push(edge); - parentNode.dynamicEdges.push(edge); - } - // remove the entry from the contained edges - delete parentNode.containedEdges[childNode.id]; + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - }; + handler.call(Detection, evData); + evData.eventType = triggerType; + delete evData.changedLength; + } + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - // ------------------- UTILITY FUNCTIONS ---------------------------- // + return triggerType; + }, + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - /** - * This updates the node labels for all nodes (for debugging purposes) - */ - exports.updateLabels = function() { - var nodeId; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.clusterSize > 1) { - node.label = "[".concat(String(node.clusterSize),"]"); - } - } - } + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.clusterSize == 1) { - if (node.originalLabel !== undefined) { - node.label = node.originalLabel; - } - else { - node.label = String(node.id); + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); } - } - } - } - // /* Debug Override */ - // for (nodeId in this.nodes) { - // if (this.nodes.hasOwnProperty(nodeId)) { - // node = this.nodes[nodeId]; - // node.label = String(node.level); - // } - // } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - }; + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - /** - * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes - * if the rest of the nodes are already a few cluster levels in. - * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not - * clustered enough to the clusterToSmallestNeighbours function. - */ - exports.normalizeClusterLevels = function() { - var maxLevel = 0; - var minLevel = 1e9; - var clusterLevel = 0; - var nodeId; + return touchList; + } - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - clusterLevel = this.nodes[nodeId].clusterSessions.length; - if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} - if (minLevel > clusterLevel) {minLevel = clusterLevel;} - } - } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { - var amountOfNodes = this.nodeIndices.length; - var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].clusterSessions.length < targetLevel) { - this._clusterToSmallestNeighbour(this.nodes[nodeId]); + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; } - } - } - this._updateNodeIndexList(); - this._updateDynamicEdges(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } - } - }; - + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - /** - * This function determines if the cluster we want to decluster is in the active area - * this means around the zoom center - * - * @param {Node} node - * @returns {boolean} - * @private - */ - exports._nodeInActiveArea = function(node) { - return ( - Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale - && - Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale - ) - }; + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * This is an adaptation of the original repositioning function. This is called if the system is clustered initially - * It puts large clusters away from the center and randomizes the order. - * - */ - exports.repositionNodes = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - if ((node.xFixed == false || node.yFixed == false)) { - var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - this._repositionBezierNodes(node); + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; } - } }; /** - * 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%) + * @module hammer * - * @private + * @class PointerEvent + * @static */ - exports._getHubSize = function() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; - - for (var i = 0; i < this.nodeIndices.length; i++) { - - var node = this.nodes[this.nodeIndices[i]]; - if (node.dynamicEdgesLength > largestHub) { - largestHub = node.dynamicEdgesLength; - } - average += node.dynamicEdgesLength; - averageSquared += Math.pow(node.dynamicEdgesLength,2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; - - var variance = averageSquared - Math.pow(average,2); + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - var standardDeviation = Math.sqrt(variance); + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - this.hubThreshold = Math.floor(average + 2*standardDeviation); + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - // always have at least one to cluster - if (this.hubThreshold > largestHub) { - this.hubThreshold = largestHub; - } + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); - // console.log("hubThreshold:",this.hubThreshold); - }; + var pt = ev.pointerType, + types = {}; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - /** - * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce - * @private - */ - exports._reduceAmountOfChains = function(fraction) { - this.hubThreshold = 2; - var reduceAmount = Math.floor(this.nodeIndices.length * fraction); - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - if (reduceAmount > 0) { - this._formClusterFromHub(this.nodes[nodeId],true,true,1); - reduceAmount -= 1; - } - } + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } - } }; + /** - * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. + * @module hammer * - * @private + * @class Detection + * @static */ - exports._getChainFraction = function() { - var chains = 0; - var total = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - chains += 1; - } - total += 1; - } - } - return chains/total; - }; - + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { + // data of the current Hammer.gesture detection session + current: null, - var util = __webpack_require__(1); + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - /** - * Creation of the SectorMixin var. - * - * This contains all the functions the Network object can use to employ the sector system. - * The sector system is always used by Network, though the benefits only apply to the use of clustering. - * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. - */ + // when this becomes true, no gestures are fired + stopped: false, - /** - * This function is only called by the setData function of the Network object. - * This loads the global references into the active sector. This initializes the sector. - * - * @private - */ - exports._putDataInSector = function() { - this.sectors["active"][this._sector()].nodes = this.nodes; - this.sectors["active"][this._sector()].edges = this.edges; - this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; - }; + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } + this.stopped = false; - /** - * /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied (active) sector. If a type is defined, do the specific type - * - * @param {String} sectorId - * @param {String} [sectorType] | "active" or "frozen" - * @private - */ - exports._switchToSector = function(sectorId, sectorType) { - if (sectorType === undefined || sectorType == "active") { - this._switchToActiveSector(sectorId); - } - else { - this._switchToFrozenSector(sectorId); - } - }; + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; + this.detect(eventData); + }, - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @param sectorId - * @private - */ - exports._switchToActiveSector = function(sectorId) { - this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["active"][sectorId]["nodes"]; - this.edges = this.sectors["active"][sectorId]["edges"]; - }; + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @private - */ - exports._switchToSupportSector = function() { - this.nodeIndices = this.sectors["support"]["nodeIndices"]; - this.nodes = this.sectors["support"]["nodes"]; - this.edges = this.sectors["support"]["edges"]; - }; + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied frozen sector. - * - * @param sectorId - * @private - */ - exports._switchToFrozenSector = function(sectorId) { - this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["frozen"][sectorId]["nodes"]; - this.edges = this.sectors["frozen"][sectorId]["edges"]; - }; + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the currently active sector. - * - * @private - */ - exports._loadLatestSector = function() { - this._switchToSector(this._sector()); - }; + return eventData; + }, + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - /** - * This function returns the currently active sector Id - * - * @returns {String} - * @private - */ - exports._sector = function() { - return this.activeSector[this.activeSector.length-1]; - }; + // reset the current + this.current = null; + this.stopped = true; + }, + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - /** - * This function returns the previously active sector Id - * - * @returns {String} - * @private - */ - exports._previousSector = function() { - if (this.activeSector.length > 1) { - return this.activeSector[this.activeSector.length-2]; - } - else { - throw new TypeError('there are not enough sectors in the this.activeSector array.'); - } - }; + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } - /** - * We add the active sector at the end of the this.activeSector array - * This ensures it is the currently active sector returned by _sector() and it reaches the top - * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. - * - * @param newId - * @private - */ - exports._setActiveSector = function(newId) { - this.activeSector.push(newId); - }; + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - /** - * We remove the currently active sector id from the active sector stack. This happens when - * we reactivate the previously active sector - * - * @private - */ - exports._forgetLastSector = function() { - this.activeSector.pop(); - }; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - /** - * This function creates a new active sector with the supplied newId. This newId - * is the expanding node id. - * - * @param {String} newId | Id of the new active sector - * @private - */ - exports._createNewSector = function(newId) { - // create the new sector - this.sectors["active"][newId] = {"nodes":{}, - "edges":{}, - "nodeIndices":[], - "formationScale": this.scale, - "drawingNode": undefined}; + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - // create the new sector render node. This gives visual feedback that you are in a new sector. - this.sectors["active"][newId]['drawingNode'] = new Node( - {id:newId, - color: { - background: "#eaefef", - border: "495c5e" - } - },{},{},this.constants); - this.sectors["active"][newId]['drawingNode'].clusterSize = 2; - }; - - - /** - * This function removes the currently active sector. This is called when we create a new - * active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteActiveSector = function(sectorId) { - delete this.sectors["active"][sectorId]; - }; + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - /** - * This function removes the currently active sector. This is called when we reactivate - * the previously active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteFrozenSector = function(sectorId) { - delete this.sectors["frozen"][sectorId]; - }; + Utils.extend(ev, { + startEvent: startEv, + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - /** - * Freezing an active sector means moving it from the "active" object to the "frozen" object. - * We copy the references, then delete the active entree. - * - * @param sectorId - * @private - */ - exports._freezeSector = function(sectorId) { - // we move the set references from the active to the frozen stack. - this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - // we have moved the sector data into the frozen set, we now remove it from the active set - this._deleteActiveSector(sectorId); - }; + return ev; + }, + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - /** - * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" - * object to the "active" object. - * - * @param sectorId - * @private - */ - exports._activateSector = function(sectorId) { - // we move the set references from the frozen to the active stack. - this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - // we have moved the sector data into the active set, we now remove it from the frozen stack - this._deleteFrozenSector(sectorId); - }; + // set its index + gesture.index = gesture.index || 1000; + // add Hammer.gesture to the list + this.gestures.push(gesture); - /** - * This function merges the data from the currently active sector with a frozen sector. This is used - * in the process of reverting back to the previously active sector. - * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it - * upon the creation of a new active sector. - * - * @param sectorId - * @private - */ - exports._mergeThisWithFrozen = function(sectorId) { - // copy all nodes - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; - } - } + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - // copy all edges (if not fully clustered, else there are no edges) - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + return this.gestures; } - } - - // merge the nodeIndices - for (var i = 0; i < this.nodeIndices.length; i++) { - this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); - } }; /** - * This clusters the sector to one cluster. It was a single cluster before this process started so - * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. - * - * @private + * @module hammer */ - exports._collapseThisToSingleCluster = function() { - this.clusterToFit(1,false); - }; - /** - * We create a new active sector from the node that we want to open. + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @param node - * @private + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - exports._addSector = function(node) { - // this is the currently active sector - var sector = this._sector(); + Hammer.Instance = function(element, options) { + var self = this; - // // this should allow me to select nodes from a frozen set. - // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { - // console.log("the node is part of the active sector"); - // } - // else { - // console.log("I dont know what the fuck happened!!"); - // } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. - delete this.nodes[node.id]; + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - var unqiueIdentifier = util.randomUUID(); + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - // we fully freeze the currently active sector - this._freezeSector(sector); + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - // we create a new active sector. This sector has the Id of the node to ensure uniqueness - this._createNewSector(unqiueIdentifier); + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // we add the active sector to the sectors array to be able to revert these steps later on - this._setActiveSector(unqiueIdentifier); + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier - this._switchToSector(this._sector()); + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - // finally we add the node we removed from our previous active sector to the new active sector - this.nodes[node.id] = node; + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; }; + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * We close the sector that is currently open and revert back to the one before. - * If the active sector is the "default" sector, nothing happens. - * - * @private - */ - exports._collapseSector = function() { - // the currently active sector - var sector = this._sector(); + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - // we cannot collapse the default sector - if (sector != "default") { - if ((this.nodeIndices.length == 1) || - (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - var previousSector = this._previousSector(); + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - // we collapse the sector back to a single cluster - this._collapseThisToSingleCluster(); + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - // we move the remaining nodes, edges and nodeIndices to the previous sector. - // This previous sector is the one we will reactivate - this._mergeThisWithFrozen(previousSector); + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - // the previously active (frozen) sector now has all the data from the currently active sector. - // we can now delete the active sector. - this._deleteActiveSector(sector); + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - // we activate the previously active (and currently frozen) sector. - this._activateSector(previousSector); + element.dispatchEvent(event); + return this; + }, - // we load the references from the newly active sector into the global references - this._switchToSector(previousSector); + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - // we forget the previously active sector because we reverted to the one before - this._forgetLastSector(); + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - // finally, we update the node index list. - this._updateNodeIndexList(); + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - // we refresh the list with calulation nodes and calculation node indices. - this._updateCalculationNodes(); - } - } - }; + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } + this.eventHandlers = []; - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllActiveSectors = function(runFunction,argument) { - var returnValues = []; - if (argument === undefined) { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - returnValues.push( this[runFunction]() ); - } - } - } - else { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues.push( this[runFunction](args[0],args[1]) ); - } - else { - returnValues.push( this[runFunction](argument) ); - } - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + + return null; } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; }; /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private + * @module gestures */ - exports._doInSupportSector = function(runFunction,argument) { - var returnValues = false; - if (argument === undefined) { - this._switchToSupportSector(); - returnValues = this[runFunction](); - } - else { - this._switchToSupportSector(); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues = this[runFunction](args[0],args[1]); - } - else { - returnValues = this[runFunction](argument); - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; - }; - - /** - * This runs a function in all frozen sectors. This is used in the _redraw(). + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private + * @class Drag + * @static */ - exports._doInAllFrozenSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); - } - } - } - } - this._loadLatestSector(); - }; - - /** - * This runs a function in all sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private + * @event drag + * @param {Object} ev */ - exports._doInAllSectors = function(runFunction,argument) { - var args = Array.prototype.splice.call(arguments, 1); - if (argument === undefined) { - this._doInAllActiveSectors(runFunction); - this._doInAllFrozenSectors(runFunction); - } - else { - if (args.length > 1) { - this._doInAllActiveSectors(runFunction,args[0],args[1]); - this._doInAllFrozenSectors(runFunction,args[0],args[1]); - } - else { - this._doInAllActiveSectors(runFunction,argument); - this._doInAllFrozenSectors(runFunction,argument); - } - } - }; - - /** - * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the - * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. - * - * @private + * @event dragstart + * @param {Object} ev */ - exports._clearNodeIndexList = function() { - var sector = this._sector(); - this.sectors["active"][sector]["nodeIndices"] = []; - this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; - }; - - /** - * Draw the encompassing sector node - * - * @param ctx - * @param sectorType - * @private + * @event dragend + * @param {Object} ev */ - exports._drawSectorNodes = function(ctx,sectorType) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - for (var sector in this.sectors[sectorType]) { - if (this.sectors[sectorType].hasOwnProperty(sector)) { - if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - - this._switchToSector(sector,sectorType); - - minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.resize(ctx); - if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} - if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} - if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} - if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} - } - } - node = this.sectors[sectorType][sector]["drawingNode"]; - node.x = 0.5 * (maxX + minX); - node.y = 0.5 * (maxY + minY); - node.width = 2 * (node.x - minX); - node.height = 2 * (node.y - minY); - node.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); - node.setScale(this.scale); - node._drawCircle(ctx); - } - } - } - }; - - exports._drawAllSectorNodes = function(ctx) { - this._drawSectorNodes(ctx,"frozen"); - this._drawSectorNodes(ctx,"active"); - this._loadLatestSector(); - }; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - var Node = __webpack_require__(36); - /** - * This function can be called from the _doInAllSectors function - * - * @param object - * @param overlappingNodes - * @private + * @event drapleft + * @param {Object} ev */ - exports._getNodesOverlappingWith = function(object, overlappingNodes) { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - if (nodes[nodeId].isOverlappingWith(object)) { - overlappingNodes.push(nodeId); - } - } - } - }; - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private + * @event dragright + * @param {Object} ev */ - exports._getAllNodesOverlappingWith = function (object) { - var overlappingNodes = []; - this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); - return overlappingNodes; - }; - - /** - * Return a position object in canvasspace from a single point in screenspace - * - * @param pointer - * @returns {{left: number, top: number, right: number, bottom: number}} - * @private + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev */ - exports._pointerToPositionObject = function(pointer) { - var x = this._XconvertDOMtoCanvas(pointer.x); - var y = this._YconvertDOMtoCanvas(pointer.y); - - return { - left: x, - top: y, - right: x, - bottom: y - }; - }; - /** - * Get the top node at the a specific point (like a click) - * - * @param {{x: Number, y: Number}} pointer - * @return {Node | null} node - * @private + * @param {String} name */ - exports._getNodeAt = function (pointer) { - // we first check if this is an navigation controls element - var positionObject = this._pointerToPositionObject(pointer); - var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); + (function(name) { + var triggered = false; - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - if (overlappingNodes.length > 0) { - return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - } - else { - return null; - } - }; + function dragGesture(ev, inst) { + var cur = Detection.current; + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - /** - * retrieve all edges overlapping with given object, selector is around center - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getEdgesOverlappingWith = function (object, overlappingEdges) { - var edges = this.edges; - for (var edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - if (edges[edgeId].isOverlappingWith(object)) { - overlappingEdges.push(edgeId); - } - } - } - }; + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllEdgesOverlappingWith = function (object) { - var overlappingEdges = []; - this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); - return overlappingEdges; - }; + var startCenter = cur.startEvent.center; - /** - * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call - * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. - * - * @param pointer - * @returns {null} - * @private - */ - exports._getEdgeAt = function(pointer) { - var positionObject = this._pointerToPositionObject(pointer); - var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - if (overlappingEdges.length > 0) { - return this.edges[overlappingEdges[overlappingEdges.length - 1]]; - } - else { - return null; - } - }; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToSelection = function(obj) { - if (obj instanceof Node) { - this.selectionObj.nodes[obj.id] = obj; - } - else { - this.selectionObj.edges[obj.id] = obj; - } - }; + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToHover = function(obj) { - if (obj instanceof Node) { - this.hoverObj.nodes[obj.id] = obj; - } - else { - this.hoverObj.edges[obj.id] = obj; - } - }; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - /** - * Remove a single option from selection. - * - * @param {Object} obj - * @private - */ - exports._removeFromSelection = function(obj) { - if (obj instanceof Node) { - delete this.selectionObj.nodes[obj.id]; - } - else { - delete this.selectionObj.edges[obj.id]; - } - }; + var isVertical = Utils.isVertical(ev.direction); - /** - * Unselect all. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectAll = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - this.selectionObj.nodes[nodeId].unselect(); - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - this.selectionObj.edges[edgeId].unselect(); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; + + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + + case EVENT_END: + triggered = false; + break; + } } - } - this.selectionObj = {nodes:{},edges:{}}; + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - /** - * Unselect all clusters. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectClusters = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - this.selectionObj.nodes[nodeId].unselect(); - this._removeFromSelection(this.selectionObj.nodes[nodeId]); - } - } - } + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - /** - * return the number of selected nodes - * - * @returns {number} - * @private - */ - exports._getSelectedNodeCount = function() { - var count = 0; - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - return count; - }; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * return the selected node - * - * @returns {number} - * @private + * @module gestures */ - exports._getSelectedNode = function() { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return this.selectionObj.nodes[nodeId]; - } - } - return null; - }; - /** - * return the selected edge + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... * - * @returns {number} - * @private + * @class Gesture + * @static */ - exports._getSelectedEdge = function() { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - return this.selectionObj.edges[edgeId]; - } - } - return null; - }; - - /** - * return the number of selected edges - * - * @returns {number} - * @private + * @event gesture + * @param {Object} ev */ - exports._getSelectedEdgeCount = function() { - var count = 0; - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } - } - return count; }; - /** - * return the number of selected objects. - * - * @returns {number} - * @private + * @module gestures */ - exports._getSelectedObjectCount = function() { - var count = 0; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; - /** - * Check if anything is selected + * Touch stays at the same place for x time * - * @returns {boolean} - * @private + * @class Hold + * @static */ - exports._selectionIsEmpty = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return false; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - return false; - } - } - return true; - }; - - /** - * check if one of the selected nodes is a cluster. - * - * @returns {boolean} - * @private + * @event hold + * @param {Object} ev */ - exports._clusterInSelection = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - return true; - } - } - } - return false; - }; /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private + * @param {String} name */ - exports._selectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.select(); - this._addToSelection(edge); - } - }; - - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._hoverConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.hover = true; - this._addToHover(edge); - } - }; - - - /** - * unselect the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._unselectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.unselect(); - this._removeFromSelection(edge); - } - }; + (function(name) { + var timer; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + // set the gesture so we can check in the timeout if it still is + current.name = name; - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @param {Boolean} append - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - if (highlightEdges === undefined) { - highlightEdges = true; - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { - this._unselectAll(true); - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - if (object.selected == false) { - object.select(); - this._addToSelection(object); - if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { - this._selectConnectedEdges(object); + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - } - else { - object.unselect(); - this._removeFromSelection(object); - } - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private + * @module gestures */ - exports._blurObject = function(object) { - if (object.hover == true) { - object.hover = false; - this.emit("blurNode",{node:object.id}); - } - }; - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection + * when a touch is being released from the page * - * @param {Node || Edge} object - * @private + * @class Release + * @static */ - exports._hoverObject = function(object) { - if (object.hover == false) { - object.hover = true; - this._addToHover(object); - if (object instanceof Node) { - this.emit("hoverNode",{node:object.id}); + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } } - } - if (object instanceof Node) { - this._hoverConnectedEdges(object); - } }; - /** - * handles the selection part of the touch, only for navigation controls elements; - * Touch is triggered before tap, also before hold. Hold triggers after a while. - * This is the most responsive solution - * - * @param {Object} pointer - * @private + * @module gestures */ - exports._handleTouch = function(pointer) { - }; - - /** - * handles the selection part of the tap; + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @param {Object} pointer - * @private + * @class Swipe + * @static */ - exports._handleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,false); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,false); - } - else { - this._unselectAll(); - } - } - this.emit("click", this.getSelection()); - this._redraw(); - }; - - /** - * handles the selection part of the double tap and opens a cluster if needed - * - * @param {Object} pointer - * @private + * @event swipe + * @param {Object} ev */ - exports._handleDoubleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null && node !== undefined) { - // we reset the areaCenter here so the opening of the node will occur - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; - this.openCluster(node); - } - this.emit("doubleClick", this.getSelection()); - }; - - /** - * Handle the onHold selection part - * - * @param pointer - * @private + * @event swipeleft + * @param {Object} ev */ - exports._handleOnHold = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,true); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,true); - } - } - this._redraw(); - }; - - /** - * handle the onRelease event. These functions are here for the navigation controls module. - * - * @private + * @event swiperight + * @param {Object} ev */ - exports._handleOnRelease = function(pointer) { - - }; - - - /** - * - * retrieve the currently selected objects - * @return {{nodes: Array., edges: Array.}} selection + * @event swipeup + * @param {Object} ev */ - exports.getSelection = function() { - var nodeIds = this.getSelectedNodes(); - var edgeIds = this.getSelectedEdges(); - return {nodes:nodeIds, edges:edgeIds}; - }; - - /** - * - * retrieve the currently selected nodes - * @return {String[]} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedNodes = function() { - var idArray = []; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); - } - } - return idArray - }; - /** - * - * retrieve the currently selected edges - * @return {Array} selection An array with the ids of the - * selected nodes. + * @event swipedown + * @param {Object} ev */ - exports.getSelectedEdges = function() { - var idArray = []; - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); - } - } - return idArray; - }; + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - /** - * select zero or more nodes - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.setSelection = function(selection) { - var i, iMax, id; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // first unselect any selected node - this._unselectAll(true); + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } } - this._selectObject(node,true,true); - } - - console.log("setSelection is deprecated. Please use selectNodes instead.") - - this.redraw(); }; + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ /** - * select zero or more nodes with the option to highlight edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - * @param {boolean} [highlightEdges] + * @param {String} name */ - exports.selectNodes = function(selection, highlightEdges) { - var i, iMax, id; + (function(name) { + var hasMoved = false; - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - // first unselect any selected node - this._unselectAll(true); + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); - } - this._selectObject(node,true,true,highlightEdges); - } - this.redraw(); - }; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - /** - * select zero or more edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.selectEdges = function(selection) { - var i, iMax, id; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - // first unselect any selected node - this._unselectAll(true); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - var edge = this.edges[id]; - if (!edge) { - throw new RangeError('Edge with id "' + id + '" not found'); - } - this._selectObject(edge,true,true,highlightEdges); - } - this.redraw(); - }; + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); /** - * Validate the selection: remove ids of nodes which no longer exist - * @private + * @module gestures */ - exports._updateSelection = function () { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (!this.nodes.hasOwnProperty(nodeId)) { - delete this.selectionObj.nodes[nodeId]; - } - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - if (!this.edges.hasOwnProperty(edgeId)) { - delete this.selectionObj.edges[edgeId]; - } - } - } - }; - - -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Node = __webpack_require__(36); - var Edge = __webpack_require__(34); - /** - * clears the toolbar div element of children + * when a touch is being touched at the page * - * @private + * @class Touch + * @static */ - exports._clearManipulatorBar = function() { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } - }; - /** - * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore - * these functions to their original functionality, we saved them in this.cachedFunctions. - * This function restores these functions to their original function. - * - * @private + * @event touch + * @param {Object} ev */ - exports._restoreOverloadedFunctions = function() { - for (var functionName in this.cachedFunctions) { - if (this.cachedFunctions.hasOwnProperty(functionName)) { - this[functionName] = this.cachedFunctions[functionName]; + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, + + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } + + if(inst.options.preventDefault) { + ev.preventDefault(); + } + + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } } - } }; /** - * Enable or disable edit-mode. + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. * - * @private + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - exports._toggleEditMode = function() { - this.editMode = !this.editMode; - var toolbar = document.getElementById("network-manipulationDiv"); - var closeDiv = document.getElementById("network-manipulation-closeDiv"); - var editModeDiv = document.getElementById("network-manipulation-editMode"); - if (this.editMode == true) { - toolbar.style.display="block"; - closeDiv.style.display="block"; - editModeDiv.style.display="none"; - closeDiv.onclick = this._toggleEditMode.bind(this); - } - else { - toolbar.style.display="none"; - closeDiv.style.display="none"; - editModeDiv.style.display="block"; - closeDiv.onclick = null; - } - this._createManipulatorBar() - }; /** - * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. - * - * @private + * @param {String} name */ - exports._createManipulatorBar = function() { - // remove bound functions - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + (function(name) { + var triggered = false; - var locale = this.constants.locales[this.constants.locale]; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - if (this.edgeBeingEdited !== undefined) { - this.edgeBeingEdited._disableControlNodes(); - this.edgeBeingEdited = undefined; - this.selectedControlNode = null; - this.controlNodesActive = false; - } + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - // restore overloaded functions - this._restoreOverloadedFunctions(); + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - // resume calculation - this.freezeSimulation = false; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - // reset global variables - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; + // we are transforming! + Detection.current.name = name; - if (this.editMode == true) { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // add the icons to the manipulator div - this.manipulationDiv.innerHTML = "" + - "" + - ""+locale['addNode'] +"" + - "
" + - "" + - ""+locale['addEdge'] +""; - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+locale['editNode'] +""; - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+locale['editEdge'] +""; - } - if (this._selectionIsEmpty() == false) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+locale['del'] +""; - } + inst.trigger(name, ev); // basic transform event + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - // bind the icons - var addNodeButton = document.getElementById("network-manipulate-addNode"); - addNodeButton.onclick = this._createAddNodeToolbar.bind(this); - var addEdgeButton = document.getElementById("network-manipulate-connectNode"); - addEdgeButton.onclick = this._createAddEdgeToolbar.bind(this); - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - var editButton = document.getElementById("network-manipulate-editNode"); - editButton.onclick = this._editNode.bind(this); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - var editButton = document.getElementById("network-manipulate-editEdge"); - editButton.onclick = this._createEditEdgeToolbar.bind(this); - } - if (this._selectionIsEmpty() == false) { - var deleteButton = document.getElementById("network-manipulate-delete"); - deleteButton.onclick = this._deleteSelected.bind(this); + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; + + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } } - var closeDiv = document.getElementById("network-manipulation-closeDiv"); - closeDiv.onclick = this._toggleEditMode.bind(this); - this.boundFunction = this._createManipulatorBar.bind(this); - this.on('select', this.boundFunction); - } - else { - this.editModeDiv.innerHTML = "" + - "" + - "" + locale['edit'] + ""; - var editModeButton = document.getElementById("network-manipulate-editModeButton"); - editModeButton.onclick = this._toggleEditMode.bind(this); - } - }; + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, + handler: transformGesture + }; + })('transform'); /** - * Create the toolbar for adding Nodes - * - * @private + * @module hammer */ - exports._createAddNodeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - if (this.boundFunction) { - this.off('select', this.boundFunction); - } - var locale = this.constants.locales[this.constants.locale]; - - // create the toolbar contents - this.manipulationDiv.innerHTML = "" + - "" + - "" + locale['back'] + " " + - "
" + - "" + - "" + locale['addDescription'] + ""; - - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - this.boundFunction = this._addNode.bind(this); - this.on('select', this.boundFunction); - }; + })(window); +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { /** - * create the toolbar to connect nodes + * Creation of the ClusterMixin var. * - * @private + * This contains all the functions the Network object can use to employ clustering */ - exports._createAddEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this._unselectAll(true); - this.freezeSimulation = true; - var locale = this.constants.locales[this.constants.locale]; + /** + * This is only called in the constructor of the network object + * + */ + exports.startWithClustering = function() { + // cluster if the data set is big + this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + // updates the lables after clustering + this.updateLabels(); - this._unselectAll(); - this.forceAppendSelection = false; - this.blockConnectingEdgeSelection = true; + // this is called here because if clusterin is disabled, the start and stabilize are called in + // the setData function. + if (this.stabilize) { + this._stabilize(); + } + this.start(); + }; - this.manipulationDiv.innerHTML = "" + - "" + - "" + locale['back'] + " " + - "
" + - "" + - "" + locale['edgeDescription'] + ""; + /** + * This function clusters until the initialMaxNodes has been reached + * + * @param {Number} maxNumberOfNodes + * @param {Boolean} reposition + */ + exports.clusterToFit = function(maxNumberOfNodes, reposition) { + var numberOfNodes = this.nodeIndices.length; - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); + var maxLevels = 50; + var level = 0; - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - this.boundFunction = this._handleConnect.bind(this); - this.on('select', this.boundFunction); + // we first cluster the hubs, then we pull in the outliers, repeat + while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { + if (level % 3 == 0) { + this.forceAggregateHubs(true); + this.normalizeClusterLevels(); + } + else { + this.increaseClusterLevel(); // this also includes a cluster normalization + } - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; - this._handleTouch = this._handleConnect; - this._handleOnRelease = this._finishConnect; + numberOfNodes = this.nodeIndices.length; + level += 1; + } - // redraw to show the unselect - this._redraw(); + // after the clustering we reposition the nodes to reduce the initial chaos + if (level > 0 && reposition == true) { + this.repositionNodes(); + } + this._updateCalculationNodes(); }; /** - * create the toolbar to edit edges + * This function can be called to open up a specific cluster. It is only called by + * It will unpack the cluster back one level. * - * @private + * @param node | Node object: cluster to open. */ - exports._createEditEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this.controlNodesActive = true; - - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + exports.openCluster = function(node) { + var isMovingBeforeClustering = this.moving; + if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && + !(this._sector() == "default" && this.nodeIndices.length == 1)) { + // this loads a new sector, loads the nodes and edges and nodeIndices of it. + this._addSector(node); + var level = 0; - this.edgeBeingEdited = this._getSelectedEdge(); - this.edgeBeingEdited._enableControlNodes(); + // we decluster until we reach a decent number of nodes + while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { + this.decreaseClusterLevel(); + level += 1; + } - var locale = this.constants.locales[this.constants.locale]; + } + else { + this._expandClusterNode(node,false,true); - this.manipulationDiv.innerHTML = "" + - "" + - "" + locale['back'] + " " + - "
" + - "" + - "" + locale['editEdgeDescription'] + ""; + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this._updateCalculationNodes(); + this.updateLabels(); + } - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + }; - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; - this.cachedFunctions["_handleTap"] = this._handleTap; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleTouch = this._selectControlNode; - this._handleTap = function () {}; - this._handleOnDrag = this._controlNodeDrag; - this._handleDragStart = function () {} - this._handleOnRelease = this._releaseControlNode; - // redraw to show the unselect - this._redraw(); + /** + * This calls the updateClustes with default arguments + */ + exports.updateClustersDefault = function() { + if (this.constants.clustering.enabled == true) { + this.updateClusters(0,false,false); + } }; - + /** + * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will + * be clustered with their connected node. This can be repeated as many times as needed. + * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. + */ + exports.increaseClusterLevel = function() { + this.updateClusters(-1,false,true); + }; /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private + * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will + * be unpacked if they are a cluster. This can be repeated as many times as needed. + * This can be called externally (by a key-bind for instance) to look into clusters without zooming. */ - exports._selectControlNode = function(pointer) { - this.edgeBeingEdited.controlNodes.from.unselect(); - this.edgeBeingEdited.controlNodes.to.unselect(); - this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); - if (this.selectedControlNode !== null) { - this.selectedControlNode.select(); - this.freezeSimulation = true; - } - this._redraw(); + exports.decreaseClusterLevel = function() { + this.updateClusters(1,false,true); }; + /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. + * This is the main clustering function. It clusters and declusters on zoom or forced + * This function clusters on zoom, it can be called with a predefined zoom direction + * If out, check if we can form clusters, if in, check if we can open clusters. + * This function is only called from _zoom() + * + * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn + * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} doNotStart | if true do not call start * - * @private */ - exports._controlNodeDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { - this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); - this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; + + // on zoom out collapse the sector if the scale is at the level the sector was made + if (this.previousScale > this.scale && zoomDirection == 0) { + this._collapseSector(); } - this._redraw(); - }; - exports._releaseControlNode = function(pointer) { - var newNode = this._getNodeAt(pointer); - if (newNode != null) { - if (this.edgeBeingEdited.controlNodes.from.selected == true) { - this._editEdge(newNode.id, this.edgeBeingEdited.to.id); - this.edgeBeingEdited.controlNodes.from.unselect(); + // check if we zoom in or out + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + // forming clusters when forced pulls outliers in. When not forced, the edge length of the + // outer nodes determines if it is being clustered + this._formClusters(force); + } + else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in + if (force == true) { + // _openClusters checks for each node if the formationScale of the cluster is smaller than + // the current scale and if so, declusters. When forced, all clusters are reduced by one step + this._openClusters(recursive,force); } - if (this.edgeBeingEdited.controlNodes.to.selected == true) { - this._editEdge(this.edgeBeingEdited.from.id, newNode.id); - this.edgeBeingEdited.controlNodes.to.unselect(); + else { + // if a cluster takes up a set percentage of the active window + this._openClustersBySize(); } } - else { - this.edgeBeingEdited._restoreControlNodes(); + this._updateNodeIndexList(); + + // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs + if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { + this._aggregateHubs(force); + this._updateNodeIndexList(); } - this.freezeSimulation = false; - this._redraw(); - }; - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._handleConnect = function(pointer) { - if (this._getSelectedNodeCount() == 0) { - var node = this._getNodeAt(pointer); - var supportNodes, targetNode, targetViaNode, connectionEdge; + // we now reduce chains. + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + this.handleChains(); + this._updateNodeIndexList(); + } - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]['createEdgeError']) - } - else { - this._selectObject(node,false); - supportNodes = this.sectors['support']['nodes']; + this.previousScale = this.scale; - // create a node the temporary line can look at - supportNodes['targetNode'] = targetNode = new Node({id:'targetNode'},{},{},this.constants); - targetNode.x = node.x; - targetNode.y = node.y; + // rest of the update the index list, dynamic edges and labels + this._updateDynamicEdges(); + this.updateLabels(); - supportNodes['targetViaNode'] = targetViaNode = new Node({id:'targetViaNode'},{},{},this.constants); - targetViaNode.x = node.x; - targetViaNode.y = node.y; - targetViaNode.parentEdgeId = "connectionEdge"; + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place + this.clusterSession += 1; + // if clusters have been made, we normalize the cluster level + this.normalizeClusterLevels(); + } - // create a temporary edge - this.edges['connectionEdge'] = connectionEdge = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); - connectionEdge.from = node; - connectionEdge.connected = true; - connectionEdge.smooth = true; - connectionEdge.selected = true; - connectionEdge.to = targetNode; - connectionEdge.via = targetViaNode; + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleOnDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - var supportNodes = this.sectors['support']['nodes']; - supportNodes['targetNode'].x = this._XconvertDOMtoCanvas(pointer.x); - supportNodes['targetNode'].y = this._YconvertDOMtoCanvas(pointer.y); - supportNodes['targetViaNode'].x = 0.5 * (this._XconvertDOMtoCanvas(pointer.x) + this.edges['connectionEdge'].from.x); - supportNodes['targetViaNode'].y = this._YconvertDOMtoCanvas(pointer.y); - }; + this._updateCalculationNodes(); + }; + + /** + * This function handles the chains. It is called on every updateClusters(). + */ + exports.handleChains = function() { + // after clustering we check how many chains there are + var chainPercentage = this._getChainFraction(); + if (chainPercentage > this.constants.clustering.chainThreshold) { + this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) - this.moving = true; - this.start(); - } - } } }; - exports._finishConnect = function(pointer) { - if (this._getSelectedNodeCount() == 1) { + /** + * this functions starts clustering by hubs + * The minimum hub threshold is set globally + * + * @private + */ + exports._aggregateHubs = function(force) { + this._getHubSize(); + this._formClustersByHub(force,false); + }; - // restore the drag function - this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; - delete this.cachedFunctions["_handleOnDrag"]; - // remember the edge id - var connectFromId = this.edges['connectionEdge'].fromId; + /** + * This function is fired by keypress. It forces hubs to form. + * + */ + exports.forceAggregateHubs = function(doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - // remove the temporary nodes and edge - delete this.edges['connectionEdge']; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; + this._aggregateHubs(true); - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]["createEdgeError"]) - } - else { - this._createEdge(connectFromId,node.id); - this._createManipulatorBar(); - } + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this.updateLabels(); + + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } + + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); } - this._unselectAll(); } }; - /** - * Adds a node on the specified location + * If a cluster takes up more than a set percentage of the screen, open the cluster + * + * @private */ - exports._addNode = function() { - if (this._selectionIsEmpty() && this.editMode == true) { - var positionObject = this._pointerToPositionObject(this.pointerPosition); - var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; - if (this.triggerFunctions.add) { - if (this.triggerFunctions.add.length == 2) { - var me = this; - this.triggerFunctions.add(defaultData, function(finalizedData) { - me.nodesData.add(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for add does not support two arguments (data,callback)'); - this._createManipulatorBar(); - this.moving = true; - this.start(); + exports._openClustersBySize = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.inView() == true) { + if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + this.openCluster(node); + } } } - else { - this.nodesData.add(defaultData); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } } }; /** - * connect two nodes with a new edge. + * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it + * has to be opened based on the current zoom level. * * @private */ - exports._createEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.connect) { - if (this.triggerFunctions.connect.length == 2) { - var me = this; - this.triggerFunctions.connect(defaultData, function(finalizedData) { - me.edgesData.add(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for connect does not support two arguments (data,callback)'); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.add(defaultData); - this.moving = true; - this.start(); - } + exports._openClusters = function(recursive,force) { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + this._expandClusterNode(node,recursive,force); + this._updateCalculationNodes(); } }; /** - * connect two nodes with a new edge. + * This function checks if a node has to be opened. This is done by checking the zoom level. + * If the node contains child nodes, this function is recursively called on the child nodes as well. + * This recursive behaviour is optional and can be set by the recursive argument. * + * @param {Node} parentNode | to check for cluster and expand + * @param {Boolean} recursive | enabled or disable recursive calling + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released * @private */ - exports._editEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.editEdge) { - if (this.triggerFunctions.editEdge.length == 2) { - var me = this; - this.triggerFunctions.editEdge(defaultData, function(finalizedData) { - me.edgesData.update(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - this.moving = true; - this.start(); - } + exports._expandClusterNode = function(parentNode, recursive, force, openAll) { + // first check if node is a cluster + if (parentNode.clusterSize > 1) { + // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { + openAll = true; } - else { - this.edgesData.update(defaultData); - this.moving = true; - this.start(); + recursive = openAll ? true : recursive; + + // if the last child has been added on a smaller scale than current scale decluster + if (parentNode.formationScale < this.scale || force == true) { + // we will check if any of the contained child nodes should be removed from the cluster + for (var containedNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { + var childNode = parentNode.containedNodes[containedNodeId]; + + // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that + // the largest cluster is the one that comes from outside + if (force == true) { + if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] + || openAll) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + else { + if (this._nodeInActiveArea(parentNode)) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + } + } } } }; /** - * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * ONLY CALLED FROM _expandClusterNode + * + * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove + * the child node from the parent contained_node object and put it back into the global nodes object. + * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. * + * @param {Node} parentNode | the parent node + * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node + * @param {Boolean} recursive | This will also check if the child needs to be expanded. + * With force and recursive both true, the entire cluster is unpacked + * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent + * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released * @private */ - exports._editNode = function() { - if (this.triggerFunctions.edit && this.editMode == true) { - var node = this._getSelectedNode(); - var data = {id:node.id, - label: node.label, - group: node.options.group, - shape: node.options.shape, - color: { - background:node.options.color.background, - border:node.options.color.border, - highlight: { - background:node.options.color.highlight.background, - border:node.options.color.highlight.border - } - }}; - if (this.triggerFunctions.edit.length == 2) { - var me = this; - this.triggerFunctions.edit(data, function (finalizedData) { - me.nodesData.update(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - } - } - else { - throw new Error('No edit function has been bound to this button'); - } - }; + exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { + var childNode = parentNode.containedNodes[containedNodeId]; + // if child node has been added on smaller scale than current, kick out + if (childNode.formationScale < this.scale || force == true) { + // unselect all selected items + this._unselectAll(); + // put the child node back in the global nodes object + this.nodes[containedNodeId] = childNode; + // release the contained edges from this childNode back into the global edges + this._releaseContainedEdges(parentNode,childNode); - /** - * delete everything in the selection - * - * @private - */ - exports._deleteSelected = function() { - if (!this._selectionIsEmpty() && this.editMode == true) { - if (!this._clusterInSelection()) { - var selectedNodes = this.getSelectedNodes(); - var selectedEdges = this.getSelectedEdges(); - if (this.triggerFunctions.del) { - var me = this; - var data = {nodes: selectedNodes, edges: selectedEdges}; - if (this.triggerFunctions.del.length = 2) { - this.triggerFunctions.del(data, function (finalizedData) { - me.edgesData.remove(finalizedData.edges); - me.nodesData.remove(finalizedData.nodes); - me._unselectAll(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for delete does not support two arguments (data, callback)') + // reconnect rerouted edges to the childNode + this._connectEdgeBackToChild(parentNode,childNode); + + // validate all edges in dynamicEdges + this._validateEdges(parentNode); + + // undo the changes from the clustering operation on the parent node + parentNode.options.mass -= childNode.options.mass; + parentNode.clusterSize -= childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; + + // place the child node near the parent, not at the exact same location to avoid chaos in the system + childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); + childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + + // remove node from the list + delete parentNode.containedNodes[containedNodeId]; + + // check if there are other childs with this clusterSession in the parent. + var othersPresent = false; + for (var childNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { + if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { + othersPresent = true; + break; } } - else { - this.edgesData.remove(selectedEdges); - this.nodesData.remove(selectedNodes); - this._unselectAll(); - this.moving = true; - this.start(); - } } - else { - alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); + // if there are no others, remove the cluster session from the list + if (othersPresent == false) { + parentNode.clusterSessions.pop(); } - } - }; + this._repositionBezierNodes(childNode); + // this._repositionBezierNodes(parentNode); -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { + // remove the clusterSession from the child node + childNode.clusterSession = 0; - var util = __webpack_require__(1); - var Hammer = __webpack_require__(42); + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - exports._cleanNavigation = function() { - // clean up previous navigation items - var wrapper = document.getElementById('network-navigation_wrapper'); - if (wrapper && wrapper.parentNode) { - wrapper.parentNode.removeChild(wrapper); + // restart the simulation to reorganise all nodes + this.moving = true; } - document.onmouseup = null; - }; - - /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private - */ - exports._loadNavigationElements = function() { - this._cleanNavigation(); - - this.navigationDivs = {}; - var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; - var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','zoomExtent']; - - this.navigationDivs['wrapper'] = document.createElement('div'); - this.navigationDivs['wrapper'].id = 'network-navigation_wrapper'; - this.frame.appendChild(this.navigationDivs['wrapper']); - var me = this; - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDivs[navigationDivs[i]] = document.createElement('div'); - this.navigationDivs[navigationDivs[i]].id = 'network-navigation_' + navigationDivs[i]; - this.navigationDivs[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; - this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); - var hammer = Hammer(this.navigationDivs[navigationDivs[i]], {prevent_default: true}); - hammer.on('touch', me[navigationDivActions[i]].bind(me)); + // check if a further expansion step is possible if recursivity is enabled + if (recursive == true) { + this._expandClusterNode(childNode,recursive,force,openAll); } - var hammer = Hammer(document, {prevent_default: false}); - hammer.on('release', me._stopMovement.bind(me)); }; + /** - * this stops all movement induced by the navigation buttons + * position the bezier nodes at the center of the edges * + * @param node * @private */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); + exports._repositionBezierNodes = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + node.dynamicEdges[i].positionBezierNode(); + } }; /** - * move the screen up - * By using the increments, instead of adding a fixed number to the translation, we keep fluent and - * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently - * To avoid this behaviour, we do the translation in the start loop. + * This function checks if any nodes at the end of their trees have edges below a threshold length + * This function is called only from updateClusters() + * forceLevelCollapse ignores the length of the edge and collapses one level + * This means that a node with only one edge will be clustered with its connected node * * @private + * @param {Boolean} force */ - exports._moveUp = function(event) { - this.yIncrement = this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + exports._formClusters = function(force) { + if (force == false) { + this._formClustersByZoom(); + } + else { + this._forceClustersByZoom(); + } }; /** - * move the screen down + * This function handles the clustering by zooming out, this is based on a minimum edge distance + * * @private */ - exports._moveDown = function(event) { - this.yIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + exports._formClustersByZoom = function() { + var dx,dy,length, + minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + // check if any edges are shorter than minLength and start the clustering + // the clustering favours the node with the larger mass + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - /** - * move the screen left - * @private - */ - exports._moveLeft = function(event) { - this.xIncrement = this.constants.keyboard.speed.x; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + if (length < minLength) { + // first check which node is larger + var parentNode = edge.from; + var childNode = edge.to; + if (edge.to.options.mass > edge.from.options.mass) { + parentNode = edge.to; + childNode = edge.from; + } - /** - * move the screen right - * @private - */ - exports._moveRight = function(event) { - this.xIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + if (childNode.dynamicEdgesLength == 1) { + this._addToCluster(parentNode,childNode,false); + } + else if (parentNode.dynamicEdgesLength == 1) { + this._addToCluster(childNode,parentNode,false); + } + } + } + } + } + } }; - /** - * Zoom in, using the same method as the movement. + * This function forces the network to cluster all nodes with only one connecting edge to their + * connected node. + * * @private */ - exports._zoomIn = function(event) { - this.zoomIncrement = this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + exports._forceClustersByZoom = function() { + for (var nodeId in this.nodes) { + // another node could have absorbed this child. + if (this.nodes.hasOwnProperty(nodeId)) { + var childNode = this.nodes[nodeId]; + // the edges can be swallowed by another decrease + if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { + var edge = childNode.dynamicEdges[0]; + var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; - /** - * Zoom out - * @private - */ - exports._zoomOut = function(event) { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + // group to the largest node + if (childNode.id != parentNode.id) { + if (parentNode.options.mass > childNode.options.mass) { + this._addToCluster(parentNode,childNode,true); + } + else { + this._addToCluster(childNode,parentNode,true); + } + } + } + } + } }; /** - * Stop zooming and unhighlight the zoom controls + * To keep the nodes of roughly equal size we normalize the cluster levels. + * This function clusters a node to its smallest connected neighbour. + * + * @param node * @private */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + exports._clusterToSmallestNeighbour = function(node) { + var smallestNeighbour = -1; + var smallestNeighbourNode = null; + for (var i = 0; i < node.dynamicEdges.length; i++) { + if (node.dynamicEdges[i] !== undefined) { + var neighbour = null; + if (node.dynamicEdges[i].fromId != node.id) { + neighbour = node.dynamicEdges[i].from; + } + else if (node.dynamicEdges[i].toId != node.id) { + neighbour = node.dynamicEdges[i].to; + } - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); + if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { + smallestNeighbour = neighbour.clusterSessions.length; + smallestNeighbourNode = neighbour; + } + } + } + + if (neighbour != null && this.nodes[neighbour.id] !== undefined) { + this._addToCluster(neighbour, node, true); + } }; /** - * Stop moving in the X direction and unHighlight left and right. + * This function forms clusters from hubs, it loops over all nodes + * + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges * @private */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; - - -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { - - exports._resetLevels = function() { + exports._formClustersByHub = function(force, onlyEqual) { + // we loop over all nodes in the list for (var nodeId in this.nodes) { + // we check if it is still available since it can be used by the clustering in this loop if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } + this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); } } }; /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly + * This function forms a cluster from a specific preselected hub node * + * @param {Node} hubNode | the node we will cluster as a hub + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @param {Number} [absorptionSizeOffset] | * @private */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "DU") { - this.constants.hierarchicalLayout.levelSeparation *= -1; - } - else { - this.constants.hierarchicalLayout.levelSeparation = Math.abs(this.constants.hierarchicalLayout.levelSeparation); - } + exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { + if (absorptionSizeOffset === undefined) { + absorptionSizeOffset = 0; + } + // we decide if the node is a hub + if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || + (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { + // initialize variables + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var allowCluster = false; - if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } + // we create a list of edges because the dynamicEdges change over the course of this loop + var edgesIdarray = []; + var amountOfInitialEdges = hubNode.dynamicEdges.length; + for (var j = 0; j < amountOfInitialEdges; j++) { + edgesIdarray.push(hubNode.dynamicEdges[j].id); } - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; + // if the hub clustering is not forces, we check if one of the edges connected + // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold + if (force == false) { + allowCluster = false; + for (j = 0; j < amountOfInitialEdges; j++) { + var edge = this.edges[edgesIdarray[j]]; + if (edge !== undefined) { + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); + + if (length < minLength) { + allowCluster = true; + break; + } + } + } } } } - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent(undefined,true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); + // start the clustering if allowed + if ((!force && allowCluster) || force) { + // we loop over all edges INITIALLY connected to this hub + for (j = 0; j < amountOfInitialEdges; j++) { + edge = this.edges[edgesIdarray[j]]; + // the edge can be clustered by this function in a previous loop + if (edge !== undefined) { + var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; + // we do not want hubs to merge with other hubs nor do we want to cluster itself. + if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && + (childNode.id != hubNode.id)) { + this._addToCluster(hubNode,childNode,force); + } + } } } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + } + }; - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); - } - else { - this._determineLevelsDirected(); - } - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); + /** + * This function adds the child node to the parent node, creating a cluster if it is not already. + * + * @param {Node} parentNode | this is the node that will house the child node + * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node + * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse + * @private + */ + exports._addToCluster = function(parentNode, childNode, force) { + // join child node in the parent node + parentNode.containedNodes[childNode.id] = childNode; - // start the simulation. - this.start(); + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < childNode.dynamicEdges.length; i++) { + var edge = childNode.dynamicEdges[i]; + if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode + this._addToContainedEdges(parentNode,childNode,edge); } + else { + this._connectEdgeToCluster(parentNode,childNode,edge); + } + } + // a contained node has no dynamic edges. + childNode.dynamicEdges = []; + + // remove circular edges from clusters + this._containCircularEdgesFromNode(parentNode,childNode); + + + // remove the childNode from the global nodes object + delete this.nodes[childNode.id]; + + // update the properties of the child and parent + var massBefore = parentNode.options.mass; + childNode.clusterSession = this.clusterSession; + parentNode.options.mass += childNode.options.mass; + parentNode.clusterSize += childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + + // keep track of the clustersessions so we can open the cluster up as it has been formed. + if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { + parentNode.clusterSessions.push(this.clusterSession); + } + + // forced clusters only open from screen size and double tap + if (force == true) { + // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); + parentNode.formationScale = 0; + } + else { + parentNode.formationScale = this.scale; // The latest child has been added on this scale } + + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); + + // set the pop-out scale for the childnode + parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + + // nullify the movement velocity of the child, this is to avoid hectic behaviour + childNode.clearVelocity(); + + // the mass has altered, preservation of energy dictates the velocity to be updated + parentNode.updateVelocity(massBefore); + + // restart the simulation to reorganise all nodes + this.moving = true; }; /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() + * This function will apply the changes made to the remainingEdges during the formation of the clusters. + * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. + * It has to be called if a level is collapsed. It is called by _formClusters(). * @private */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; - - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { - - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; - - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; + exports._updateDynamicEdges = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + node.dynamicEdgesLength = node.dynamicEdges.length; - distribution[level].minPos += distribution[level].nodeSpacing; - } + // this corrects for multiple edges pointing at the same other node + var correction = 0; + if (node.dynamicEdgesLength > 1) { + for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { + var edgeToId = node.dynamicEdges[j].toId; + var edgeFromId = node.dynamicEdges[j].fromId; + for (var k = j+1; k < node.dynamicEdgesLength; k++) { + if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || + (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { + correction += 1; } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); } } } + node.dynamicEdgesLength -= correction; } - - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); }; /** - * This function get the distribution of levels based on hubsize + * This adds an edge from the childNode to the contained edges of the parent node * - * @returns {Object} + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object * @private */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; - - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } + exports._addToContainedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { + parentNode.containedEdges[childNode.id] = [] } + // add this edge to the list + parentNode.containedEdges[childNode.id].push(edge); - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + // remove the edge from the global edges object + delete this.edges[edge.id]; - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + // remove the edge from the parent object + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + if (parentNode.dynamicEdges[i].id == edge.id) { + parentNode.dynamicEdges.splice(i,1); + break; } } - - return distribution; }; - /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * This function connects an edge that was connected to a child node to the parent node. + * It keeps track of which nodes it has been connected to with the originalId array. * - * @param hubsize + * @param {Node} parentNode | Node object + * @param {Node} childNode | Node object + * @param {Edge} edge | Edge object * @private */ - exports._determineLevels = function(hubsize) { - var nodeId, node; - - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } + exports._connectEdgeToCluster = function(parentNode, childNode, edge) { + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); } + else { + if (edge.toId == childNode.id) { // edge connected to other node on the "to" side + edge.originalToId.push(childNode.id); + edge.to = parentNode; + edge.toId = parentNode.id; + } + else { // edge connected to other node with the "from" side - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } + edge.originalFromId.push(childNode.id); + edge.from = parentNode; + edge.fromId = parentNode.id; } + + this._addToReroutedEdges(parentNode,childNode,edge); } }; + /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain + * these edges inside of the cluster. * - * @param hubsize + * @param parentNode + * @param childNode * @private */ - exports._determineLevelsDirected = function() { - var nodeId, node; - - // set first node to source - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].level = 10000; - break; + exports._containCircularEdgesFromNode = function(parentNode, childNode) { + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); } } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 10000) { - this._setLevelDirected(10000,node.edges,node.id); - } - } - } - - - // branch from hubs - var minLevel = 10000; - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; - } - } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; - } - } - }; + }; /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. + * This adds an edge from the childNode to the rerouted edges of the parent node * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object * @private */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; + exports._addToReroutedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + // we store the edge in the rerouted edges so we can restore it when the cluster pops open + if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { + parentNode.reroutedEdges[childNode.id] = []; } - this._configureSmoothCurves(); - }; + parentNode.reroutedEdges[childNode.id].push(edge); + + // this edge becomes part of the dynamicEdges of the cluster node + parentNode.dynamicEdges.push(edge); + }; + /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * This function connects an edge that was connected to a cluster node back to the child node. * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel + * @param parentNode | Node object + * @param childNode | Node object * @private */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; + exports._connectEdgeBackToChild = function(parentNode, childNode) { + if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { + for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { + var edge = parentNode.reroutedEdges[childNode.id][i]; + if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { + edge.originalFromId.pop(); + edge.fromId = childNode.id; + edge.from = childNode; } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; + else { + edge.originalToId.pop(); + edge.toId = childNode.id; + edge.to = childNode; } - } - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + // append this edge to the list of edges connecting to the childnode + childNode.dynamicEdges.push(edge); + + // remove the edge from the parent object + for (var j = 0; j < parentNode.dynamicEdges.length; j++) { + if (parentNode.dynamicEdges[j].id == edge.id) { + parentNode.dynamicEdges.splice(j,1); + break; + } } } + // remove the entry from the rerouted edges + delete parentNode.reroutedEdges[childNode.id]; } }; /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * When loops are clustered, an edge can be both in the rerouted array and the contained array. + * This function is called last to verify that all edges in dynamicEdges are in fact connected to the + * parentNode * - * @param level - * @param edges - * @param parentId + * @param parentNode | Node object * @private */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } + exports._validateEdges = function(parentNode) { + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { + parentNode.dynamicEdges.splice(i,1); } } }; /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * This function released the contained edges back into the global domain and puts them back into the + * dynamic edges of both parent and child. * - * @param level - * @param edges - * @param parentId + * @param {Node} parentNode | + * @param {Node} childNode | * @private */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - for (var i = 0; i < edges.length; i++) { - var childNode = null; - var direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } - } + exports._releaseContainedEdges = function(parentNode, childNode) { + for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { + var edge = parentNode.containedEdges[childNode.id][i]; - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } + // put the edge back in the global edges object + this.edges[edge.id] = edge; + + // put the edge back in the dynamic edges of the child and parent + childNode.dynamicEdges.push(edge); + parentNode.dynamicEdges.push(edge); } + // remove the entry from the contained edges + delete parentNode.containedEdges[childNode.id]; + }; + + + // ------------------- UTILITY FUNCTIONS ---------------------------- // + + /** - * Unfix nodes - * - * @private + * This updates the node labels for all nodes (for debugging purposes) */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { + exports.updateLabels = function() { + var nodeId; + // update node labels + for (nodeId in this.nodes) { if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; + var node = this.nodes[nodeId]; + if (node.clusterSize > 1) { + node.label = "[".concat(String(node.clusterSize),"]"); + } } } - }; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.clusterSize == 1) { + if (node.originalLabel !== undefined) { + node.label = node.originalLabel; + } + else { + node.label = String(node.id); + } + } + } + } -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + // /* Debug Override */ + // for (nodeId in this.nodes) { + // if (this.nodes.hasOwnProperty(nodeId)) { + // node = this.nodes[nodeId]; + // node.label = String(node.level); + // } + // } - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + }; - (function(window, undefined) { - 'use strict'; /** - * @main - * @module hammer - * - * @class Hammer - * @static + * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes + * if the rest of the nodes are already a few cluster levels in. + * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not + * clustered enough to the clusterToSmallestNeighbours function. */ + exports.normalizeClusterLevels = function() { + var maxLevel = 0; + var minLevel = 1e9; + var clusterLevel = 0; + var nodeId; - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + clusterLevel = this.nodes[nodeId].clusterSessions.length; + if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} + if (minLevel > clusterLevel) {minLevel = clusterLevel;} + } + } + + if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { + var amountOfNodes = this.nodeIndices.length; + var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].clusterSessions.length < targetLevel) { + this._clusterToSmallestNeighbour(this.nodes[nodeId]); + } + } + } + this._updateNodeIndexList(); + this._updateDynamicEdges(); + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } + } + }; + + + + /** + * This function determines if the cluster we want to decluster is in the active area + * this means around the zoom center + * + * @param {Node} node + * @returns {boolean} + * @private */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); + exports._nodeInActiveArea = function(node) { + return ( + Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale + && + Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale + ) }; + /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} + * This is an adaptation of the original repositioning function. This is called if the system is clustered initially + * It puts large clusters away from the center and randomizes the order. + * */ - Hammer.VERSION = '1.1.3'; + exports.repositionNodes = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + if ((node.xFixed == false || node.yFixed == false)) { + var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + this._repositionBezierNodes(node); + } + } + }; + /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} + * 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 */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + exports._getHubSize = function() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + for (var i = 0; i < this.nodeIndices.length; i++) { - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + var node = this.nodes[this.nodeIndices[i]]; + if (node.dynamicEdgesLength > largestHub) { + largestHub = node.dynamicEdgesLength; + } + average += node.dynamicEdgesLength; + averageSquared += Math.pow(node.dynamicEdgesLength,2); + hubCounter += 1; + } + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + var variance = averageSquared - Math.pow(average,2); - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + var standardDeviation = Math.sqrt(variance); - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } + this.hubThreshold = Math.floor(average + 2*standardDeviation); + + // always have at least one to cluster + if (this.hubThreshold > largestHub) { + this.hubThreshold = largestHub; + } + + // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); + // console.log("hubThreshold:",this.hubThreshold); }; - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce + * @private */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + exports._reduceAmountOfChains = function(fraction) { + this.hubThreshold = 2; + var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + if (reduceAmount > 0) { + this._formClusterFromHub(this.nodes[nodeId],true,true,1); + reduceAmount -= 1; + } + } + } + } + }; /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} + * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @private */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + exports._getChainFraction = function() { + var chains = 0; + var total = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + chains += 1; + } + total += 1; + } + } + return chains/total; + }; - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 + * Creation of the SectorMixin var. + * + * This contains all the functions the Network object can use to employ the sector system. + * The sector system is always used by Network, though the benefits only apply to the use of clustering. + * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. */ - Hammer.CALCULATE_INTERVAL = 25; /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES + * This function is only called by the setData function of the Network object. + * This loads the global references into the active sector. This initializes the sector. + * * @private - * @writeOnce - * @type {Object} */ - var EVENT_TYPES = {}; + exports._putDataInSector = function() { + this.sectors["active"][this._sector()].nodes = this.nodes; + this.sectors["active"][this._sector()].edges = this.edges; + this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; + }; + /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' + * /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied (active) sector. If a type is defined, do the specific type + * + * @param {String} sectorId + * @param {String} [sectorType] | "active" or "frozen" + * @private */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + exports._switchToSector = function(sectorId, sectorType) { + if (sectorType === undefined || sectorType == "active") { + this._switchToActiveSector(sectorId); + } + else { + this._switchToFrozenSector(sectorId); + } + }; + /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @param sectorId + * @private */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + exports._switchToActiveSector = function(sectorId) { + this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["active"][sectorId]["nodes"]; + this.edges = this.sectors["active"][sectorId]["edges"]; + }; + /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @private */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + exports._switchToSupportSector = function() { + this.nodeIndices = this.sectors["support"]["nodeIndices"]; + this.nodes = this.sectors["support"]["nodes"]; + this.edges = this.sectors["support"]["edges"]; + }; + /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied frozen sector. + * + * @param sectorId + * @private */ - Hammer.READY = false; + exports._switchToFrozenSector = function(sectorId) { + this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["frozen"][sectorId]["nodes"]; + this.edges = this.sectors["frozen"][sectorId]["edges"]; + }; + /** - * plugins namespace - * @property plugins - * @type {Object} + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the currently active sector. + * + * @private */ - Hammer.plugins = Hammer.plugins || {}; + exports._loadLatestSector = function() { + this._switchToSector(this._sector()); + }; + /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * This function returns the currently active sector Id + * + * @returns {String} + * @private */ - Hammer.gestures = Hammer.gestures || {}; + exports._sector = function() { + return this.activeSector[this.activeSector.length-1]; + }; + /** - * setup events to detect gestures on the document - * this function is called when creating an new instance + * This function returns the previously active sector Id + * + * @returns {String} * @private */ - function setup() { - if(Hammer.READY) { - return; - } + exports._previousSector = function() { + if (this.activeSector.length > 1) { + return this.activeSector[this.activeSector.length-2]; + } + else { + throw new TypeError('there are not enough sectors in the this.activeSector array.'); + } + }; - // find what eventtypes we add listeners to - Event.determineEventTypes(); - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + /** + * We add the active sector at the end of the this.activeSector array + * This ensures it is the currently active sector returned by _sector() and it reaches the top + * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. + * + * @param newId + * @private + */ + exports._setActiveSector = function(newId) { + this.activeSector.push(newId); + }; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - // Hammer is ready...! - Hammer.READY = true; - } + /** + * We remove the currently active sector id from the active sector stack. This happens when + * we reactivate the previously active sector + * + * @private + */ + exports._forgetLastSector = function() { + this.activeSector.pop(); + }; + /** - * @module hammer + * This function creates a new active sector with the supplied newId. This newId + * is the expanding node id. * - * @class Utils - * @static + * @param {String} newId | Id of the new active sector + * @private */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; + exports._createNewSector = function(newId) { + // create the new sector + this.sectors["active"][newId] = {"nodes":{}, + "edges":{}, + "nodeIndices":[], + "formationScale": this.scale, + "drawingNode": undefined}; + + // create the new sector render node. This gives visual feedback that you are in a new sector. + this.sectors["active"][newId]['drawingNode'] = new Node( + {id:newId, + color: { + background: "#eaefef", + border: "495c5e" } - return dest; - }, + },{},{},this.constants); + this.sectors["active"][newId]['drawingNode'].clusterSize = 2; + }; - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + /** + * This function removes the currently active sector. This is called when we create a new + * active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteActiveSector = function(sectorId) { + delete this.sectors["active"][sectorId]; + }; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + /** + * This function removes the currently active sector. This is called when we reactivate + * the previously active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteFrozenSector = function(sectorId) { + delete this.sectors["frozen"][sectorId]; + }; - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + /** + * Freezing an active sector means moving it from the "active" object to the "frozen" object. + * We copy the references, then delete the active entree. + * + * @param sectorId + * @private + */ + exports._freezeSector = function(sectorId) { + // we move the set references from the active to the frozen stack. + this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + // we have moved the sector data into the frozen set, we now remove it from the active set + this._deleteActiveSector(sectorId); + }; - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + /** + * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" + * object to the "active" object. + * + * @param sectorId + * @private + */ + exports._activateSector = function(sectorId) { + // we move the set references from the frozen to the active stack. + this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + // we have moved the sector data into the active set, we now remove it from the frozen stack + this._deleteFrozenSector(sectorId); + }; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + /** + * This function merges the data from the currently active sector with a frozen sector. This is used + * in the process of reverting back to the previously active sector. + * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it + * upon the creation of a new active sector. + * + * @param sectorId + * @private + */ + exports._mergeThisWithFrozen = function(sectorId) { + // copy all nodes + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; + } + } - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + // copy all edges (if not fully clustered, else there are no edges) + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + } + } - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + // merge the nodeIndices + for (var i = 0; i < this.nodeIndices.length; i++) { + this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); + } + }; - return Math.atan2(y, x) * 180 / Math.PI; - }, - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + /** + * This clusters the sector to one cluster. It was a single cluster before this process started so + * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. + * + * @private + */ + exports._collapseThisToSingleCluster = function() { + this.clusterToFit(1,false); + }; - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + /** + * We create a new active sector from the node that we want to open. + * + * @param node + * @private + */ + exports._addSector = function(node) { + // this is the currently active sector + var sector = this._sector(); - return Math.sqrt((x * x) + (y * y)); - }, + // // this should allow me to select nodes from a frozen set. + // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { + // console.log("the node is part of the active sector"); + // } + // else { + // console.log("I dont know what the fuck happened!!"); + // } - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, - - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, - - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, - - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); - - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. + delete this.nodes[node.id]; - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, + var unqiueIdentifier = util.randomUUID(); - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + // we fully freeze the currently active sector + this._freezeSector(sector); - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + // we create a new active sector. This sector has the Id of the node to ensure uniqueness + this._createNewSector(unqiueIdentifier); - var falseFn = toggle && function() { - return false; - }; + // we add the active sector to the sectors array to be able to revert these steps later on + this._setActiveSector(unqiueIdentifier); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier + this._switchToSector(this._sector()); - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } + // finally we add the node we removed from our previous active sector to the new active sector + this.nodes[node.id] = node; }; /** - * @module hammer - */ - /** - * @class Event - * @static + * We close the sector that is currently open and revert back to the one before. + * If the active sector is the "default" sector, nothing happens. + * + * @private */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, - - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + exports._collapseSector = function() { + // the currently active sector + var sector = this._sector(); - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // we cannot collapse the default sector + if (sector != "default") { + if ((this.nodeIndices.length == 1) || + (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + var previousSector = this._previousSector(); - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + // we collapse the sector back to a single cluster + this._collapseThisToSingleCluster(); - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + // we move the remaining nodes, edges and nodeIndices to the previous sector. + // This previous sector is the one we will reactivate + this._mergeThisWithFrozen(previousSector); - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + // the previously active (frozen) sector now has all the data from the currently active sector. + // we can now delete the active sector. + this._deleteActiveSector(sector); - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + // we activate the previously active (and currently frozen) sector. + this._activateSector(previousSector); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + // we load the references from the newly active sector into the global references + this._switchToSector(previousSector); - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // we forget the previously active sector because we reverted to the one before + this._forgetLastSector(); - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + // finally, we update the node index list. + this._updateNodeIndexList(); - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + // we refresh the list with calulation nodes and calculation node indices. + this._updateCalculationNodes(); + } + } + }; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllActiveSectors = function(runFunction,argument) { + var returnValues = []; + if (argument === undefined) { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + returnValues.push( this[runFunction]() ); + } + } + } + else { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues.push( this[runFunction](args[0],args[1]) ); + } + else { + returnValues.push( this[runFunction](argument) ); + } + } + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInSupportSector = function(runFunction,argument) { + var returnValues = false; + if (argument === undefined) { + this._switchToSupportSector(); + returnValues = this[runFunction](); + } + else { + this._switchToSupportSector(); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues = this[runFunction](args[0],args[1]); + } + else { + returnValues = this[runFunction](argument); + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + /** + * This runs a function in all frozen sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllFrozenSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + this[runFunction](); + } + } + } + else { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); } - - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; + else { + this[runFunction](argument); } + } + } + } + this._loadLatestSector(); + }; - // detection has been started, we keep track of this, see above - this.started = true; - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + /** + * This runs a function in all sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllSectors = function(runFunction,argument) { + var args = Array.prototype.splice.call(arguments, 1); + if (argument === undefined) { + this._doInAllActiveSectors(runFunction); + this._doInAllFrozenSectors(runFunction); + } + else { + if (args.length > 1) { + this._doInAllActiveSectors(runFunction,args[0],args[1]); + this._doInAllFrozenSectors(runFunction,args[0],args[1]); + } + else { + this._doInAllActiveSectors(runFunction,argument); + this._doInAllFrozenSectors(runFunction,argument); + } + } + }; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + /** + * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the + * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. + * + * @private + */ + exports._clearNodeIndexList = function() { + var sector = this._sector(); + this.sectors["active"][sector]["nodeIndices"] = []; + this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; + }; - handler.call(Detection, evData); - evData.eventType = triggerType; - delete evData.changedLength; - } + /** + * Draw the encompassing sector node + * + * @param ctx + * @param sectorType + * @private + */ + exports._drawSectorNodes = function(ctx,sectorType) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + for (var sector in this.sectors[sectorType]) { + if (this.sectors[sectorType].hasOwnProperty(sector)) { + if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + this._switchToSector(sector,sectorType); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.resize(ctx); + if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} + if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} + if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} + if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} + } } + node = this.sectors[sectorType][sector]["drawingNode"]; + node.x = 0.5 * (maxX + minX); + node.y = 0.5 * (maxY + minY); + node.width = 2 * (node.x - minX); + node.height = 2 * (node.y - minY); + node.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.setScale(this.scale); + node._drawCircle(ctx); + } + } + } + }; - return triggerType; - }, + exports._drawAllSectorNodes = function(ctx) { + this._drawSectorNodes(ctx,"frozen"); + this._drawSectorNodes(ctx,"active"); + this._loadLatestSector(); + }; - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } + var Node = __webpack_require__(37); - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + /** + * This function can be called from the _doInAllSectors function + * + * @param object + * @param overlappingNodes + * @private + */ + exports._getNodesOverlappingWith = function(object, overlappingNodes) { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + if (nodes[nodeId].isOverlappingWith(object)) { + overlappingNodes.push(nodeId); + } + } + } + }; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllNodesOverlappingWith = function (object) { + var overlappingNodes = []; + this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); + return overlappingNodes; + }; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); - return touchList; - } + /** + * Return a position object in canvasspace from a single point in screenspace + * + * @param pointer + * @returns {{left: number, top: number, right: number, bottom: number}} + * @private + */ + exports._pointerToPositionObject = function(pointer) { + var x = this._XconvertDOMtoCanvas(pointer.x); + var y = this._YconvertDOMtoCanvas(pointer.y); - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + return { + left: x, + top: y, + right: x, + bottom: y + }; + }; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + /** + * Get the top node at the a specific point (like a click) + * + * @param {{x: Number, y: Number}} pointer + * @return {Node | null} node + * @private + */ + exports._getNodeAt = function (pointer) { + // we first check if this is an navigation controls element + var positionObject = this._pointerToPositionObject(pointer); + var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); + + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + if (overlappingNodes.length > 0) { + return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + } + else { + return null; + } + }; + + + /** + * retrieve all edges overlapping with given object, selector is around center + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getEdgesOverlappingWith = function (object, overlappingEdges) { + var edges = this.edges; + for (var edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + if (edges[edgeId].isOverlappingWith(object)) { + overlappingEdges.push(edgeId); + } + } + } + }; + + + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllEdgesOverlappingWith = function (object) { + var overlappingEdges = []; + this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); + return overlappingEdges; + }; + + /** + * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call + * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. + * + * @param pointer + * @returns {null} + * @private + */ + exports._getEdgeAt = function(pointer) { + var positionObject = this._pointerToPositionObject(pointer); + var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); + + if (overlappingEdges.length > 0) { + return this.edges[overlappingEdges[overlappingEdges.length - 1]]; + } + else { + return null; + } + }; + + + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToSelection = function(obj) { + if (obj instanceof Node) { + this.selectionObj.nodes[obj.id] = obj; + } + else { + this.selectionObj.edges[obj.id] = obj; + } + }; + + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToHover = function(obj) { + if (obj instanceof Node) { + this.hoverObj.nodes[obj.id] = obj; + } + else { + this.hoverObj.edges[obj.id] = obj; + } + }; + + + /** + * Remove a single option from selection. + * + * @param {Object} obj + * @private + */ + exports._removeFromSelection = function(obj) { + if (obj instanceof Node) { + delete this.selectionObj.nodes[obj.id]; + } + else { + delete this.selectionObj.edges[obj.id]; + } + }; + + /** + * Unselect all. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectAll = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + this.selectionObj.nodes[nodeId].unselect(); + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + this.selectionObj.edges[edgeId].unselect(); + } + } + + this.selectionObj = {nodes:{},edges:{}}; + + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; + + /** + * Unselect all clusters. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectClusters = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + this.selectionObj.nodes[nodeId].unselect(); + this._removeFromSelection(this.selectionObj.nodes[nodeId]); + } + } + } + + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; + + + /** + * return the number of selected nodes + * + * @returns {number} + * @private + */ + exports._getSelectedNodeCount = function() { + var count = 0; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + return count; + }; + + /** + * return the selected node + * + * @returns {number} + * @private + */ + exports._getSelectedNode = function() { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return this.selectionObj.nodes[nodeId]; + } + } + return null; + }; + + /** + * return the selected edge + * + * @returns {number} + * @private + */ + exports._getSelectedEdge = function() { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + return this.selectionObj.edges[edgeId]; + } + } + return null; + }; + + + /** + * return the number of selected edges + * + * @returns {number} + * @private + */ + exports._getSelectedEdgeCount = function() { + var count = 0; + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; + + + /** + * return the number of selected objects. + * + * @returns {number} + * @private + */ + exports._getSelectedObjectCount = function() { + var count = 0; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; + + /** + * Check if anything is selected + * + * @returns {boolean} + * @private + */ + exports._selectionIsEmpty = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return false; + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + return false; + } + } + return true; + }; + + + /** + * check if one of the selected nodes is a cluster. + * + * @returns {boolean} + * @private + */ + exports._clusterInSelection = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + return true; + } + } + } + return false; + }; + + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._selectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.select(); + this._addToSelection(edge); + } + }; + + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._hoverConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.hover = true; + this._addToHover(edge); + } + }; + - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + /** + * unselect the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._unselectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.unselect(); + this._removeFromSelection(edge); + } + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; /** - * @module hammer + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection * - * @class PointerEvent - * @static + * @param {Node || Edge} object + * @param {Boolean} append + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + exports._selectObject = function(object, append, doNotTrigger, highlightEdges) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + if (highlightEdges === undefined) { + highlightEdges = true; + } - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { + this._unselectAll(true); + } - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, + if (object.selected == false) { + object.select(); + this._addToSelection(object); + if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { + this._selectConnectedEdges(object); + } + } + else { + object.unselect(); + this._removeFromSelection(object); + } - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - var pt = ev.pointerType, - types = {}; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._blurObject = function(object) { + if (object.hover == true) { + object.hover = false; + this.emit("blurNode",{node:object.id}); + } + }; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._hoverObject = function(object) { + if (object.hover == false) { + object.hover = true; + this._addToHover(object); + if (object instanceof Node) { + this.emit("hoverNode",{node:object.id}); } + } + if (object instanceof Node) { + this._hoverConnectedEdges(object); + } }; /** - * @module hammer + * handles the selection part of the touch, only for navigation controls elements; + * Touch is triggered before tap, also before hold. Hold triggers after a while. + * This is the most responsive solution * - * @class Detection - * @static + * @param {Object} pointer + * @private */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + exports._handleTouch = function(pointer) { + }; - // data of the current Hammer.gesture detection session - current: null, - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + /** + * handles the selection part of the tap; + * + * @param {Object} pointer + * @private + */ + exports._handleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,false); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,false); + } + else { + this._unselectAll(); + } + } + this.emit("click", this.getSelection()); + this._redraw(); + }; - // when this becomes true, no gestures are fired - stopped: false, - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + /** + * handles the selection part of the double tap and opens a cluster if needed + * + * @param {Object} pointer + * @private + */ + exports._handleDoubleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null && node !== undefined) { + // we reset the areaCenter here so the opening of the node will occur + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.openCluster(node); + } + this.emit("doubleClick", this.getSelection()); + }; + + + /** + * Handle the onHold selection part + * + * @param pointer + * @private + */ + exports._handleOnHold = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,true); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,true); + } + } + this._redraw(); + }; - this.stopped = false; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + /** + * handle the onRelease event. These functions are here for the navigation controls module. + * + * @private + */ + exports._handleOnRelease = function(pointer) { - this.detect(eventData); - }, + }; - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + /** + * + * retrieve the currently selected objects + * @return {{nodes: Array., edges: Array.}} selection + */ + exports.getSelection = function() { + var nodeIds = this.getSelectedNodes(); + var edgeIds = this.getSelectedEdges(); + return {nodes:nodeIds, edges:edgeIds}; + }; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + /** + * + * retrieve the currently selected nodes + * @return {String[]} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedNodes = function() { + var idArray = []; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); + } + } + return idArray + }; - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + /** + * + * retrieve the currently selected edges + * @return {Array} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedEdges = function() { + var idArray = []; + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } + } + return idArray; + }; - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } - return eventData; - }, + /** + * select zero or more nodes + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.setSelection = function(selection) { + var i, iMax, id; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - // reset the current - this.current = null; - this.stopped = true; - }, + // first unselect any selected node + this._unselectAll(true); - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); + } + this._selectObject(node,true,true); + } - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + console.log("setSelection is deprecated. Please use selectNodes instead.") - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + this.redraw(); + }; - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + /** + * select zero or more nodes with the option to highlight edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + * @param {boolean} [highlightEdges] + */ + exports.selectNodes = function(selection, highlightEdges) { + var i, iMax, id; - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + // first unselect any selected node + this._unselectAll(true); - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); + } + this._selectObject(node,true,true,highlightEdges); + } + this.redraw(); + }; - Utils.extend(ev, { - startEvent: startEv, - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + /** + * select zero or more edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.selectEdges = function(selection) { + var i, iMax, id; - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - return ev; - }, + // first unselect any selected node + this._unselectAll(true); - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; + + var edge = this.edges[id]; + if (!edge) { + throw new RangeError('Edge with id "' + id + '" not found'); + } + this._selectObject(edge,true,true,highlightEdges); + } + this.redraw(); + }; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + /** + * Validate the selection: remove ids of nodes which no longer exist + * @private + */ + exports._updateSelection = function () { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (!this.nodes.hasOwnProperty(nodeId)) { + delete this.selectionObj.nodes[nodeId]; + } + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + if (!this.edges.hasOwnProperty(edgeId)) { + delete this.selectionObj.edges[edgeId]; + } + } + } + }; - // set its index - gesture.index = gesture.index || 1000; - // add Hammer.gesture to the list - this.gestures.push(gesture); +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + var util = __webpack_require__(1); + var Node = __webpack_require__(37); + var Edge = __webpack_require__(34); - return this.gestures; - } + /** + * clears the toolbar div element of children + * + * @private + */ + exports._clearManipulatorBar = function() { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } }; + /** + * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore + * these functions to their original functionality, we saved them in this.cachedFunctions. + * This function restores these functions to their original function. + * + * @private + */ + exports._restoreOverloadedFunctions = function() { + for (var functionName in this.cachedFunctions) { + if (this.cachedFunctions.hasOwnProperty(functionName)) { + this[functionName] = this.cachedFunctions[functionName]; + } + } + }; /** - * @module hammer + * Enable or disable edit-mode. + * + * @private */ + exports._toggleEditMode = function() { + this.editMode = !this.editMode; + var toolbar = document.getElementById("network-manipulationDiv"); + var closeDiv = document.getElementById("network-manipulation-closeDiv"); + var editModeDiv = document.getElementById("network-manipulation-editMode"); + if (this.editMode == true) { + toolbar.style.display="block"; + closeDiv.style.display="block"; + editModeDiv.style.display="none"; + closeDiv.onclick = this._toggleEditMode.bind(this); + } + else { + toolbar.style.display="none"; + closeDiv.style.display="none"; + editModeDiv.style.display="block"; + closeDiv.onclick = null; + } + this._createManipulatorBar() + }; /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. + * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * @private */ - Hammer.Instance = function(element, options) { - var self = this; + exports._createManipulatorBar = function() { + // remove bound functions + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + var locale = this.constants.locales[this.constants.locale]; - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + if (this.edgeBeingEdited !== undefined) { + this.edgeBeingEdited._disableControlNodes(); + this.edgeBeingEdited = undefined; + this.selectedControlNode = null; + this.controlNodesActive = false; + } - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + // restore overloaded functions + this._restoreOverloadedFunctions(); - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + // resume calculation + this.freezeSimulation = false; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + // reset global variables + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); + if (this.editMode == true) { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); } - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + // add the icons to the manipulator div + this.manipulationDiv.innerHTML = "" + + "" + + ""+locale['addNode'] +"" + + "
" + + "" + + ""+locale['addEdge'] +""; + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+locale['editNode'] +""; + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+locale['editEdge'] +""; + } + if (this._selectionIsEmpty() == false) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+locale['del'] +""; + } - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; + + // bind the icons + var addNodeButton = document.getElementById("network-manipulate-addNode"); + addNodeButton.onclick = this._createAddNodeToolbar.bind(this); + var addEdgeButton = document.getElementById("network-manipulate-connectNode"); + addEdgeButton.onclick = this._createAddEdgeToolbar.bind(this); + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + var editButton = document.getElementById("network-manipulate-editNode"); + editButton.onclick = this._editNode.bind(this); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + var editButton = document.getElementById("network-manipulate-editEdge"); + editButton.onclick = this._createEditEdgeToolbar.bind(this); + } + if (this._selectionIsEmpty() == false) { + var deleteButton = document.getElementById("network-manipulate-delete"); + deleteButton.onclick = this._deleteSelected.bind(this); + } + var closeDiv = document.getElementById("network-manipulation-closeDiv"); + closeDiv.onclick = this._toggleEditMode.bind(this); + + this.boundFunction = this._createManipulatorBar.bind(this); + this.on('select', this.boundFunction); + } + else { + this.editModeDiv.innerHTML = "" + + "" + + "" + locale['edit'] + ""; + var editModeButton = document.getElementById("network-manipulate-editModeButton"); + editModeButton.onclick = this._toggleEditMode.bind(this); + } }; - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + /** + * Create the toolbar for adding Nodes + * + * @private + */ + exports._createAddNodeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + if (this.boundFunction) { + this.off('select', this.boundFunction); + } + + var locale = this.constants.locales[this.constants.locale]; + + // create the toolbar contents + this.manipulationDiv.innerHTML = "" + + "" + + "" + locale['back'] + " " + + "
" + + "" + + "" + locale['addDescription'] + ""; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + this.boundFunction = this._addNode.bind(this); + this.on('select', this.boundFunction); + }; - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } - element.dispatchEvent(event); - return this; - }, + /** + * create the toolbar to connect nodes + * + * @private + */ + exports._createAddEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this._unselectAll(true); + this.freezeSimulation = true; - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + var locale = this.constants.locales[this.constants.locale]; - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + this._unselectAll(); + this.forceAppendSelection = false; + this.blockConnectingEdgeSelection = true; - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + this.manipulationDiv.innerHTML = "" + + "" + + "" + locale['back'] + " " + + "
" + + "" + + "" + locale['edgeDescription'] + ""; - this.eventHandlers = []; + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + this.boundFunction = this._handleConnect.bind(this); + this.on('select', this.boundFunction); - return null; - } - }; + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this._handleTouch = this._handleConnect; + this._handleOnRelease = this._finishConnect; + // redraw to show the unselect + this._redraw(); + }; /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` + * create the toolbar to edit edges * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev + * @private */ + exports._createEditEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this.controlNodesActive = true; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - function dragGesture(ev, inst) { - var cur = Detection.current; + this.edgeBeingEdited = this._getSelectedEdge(); + this.edgeBeingEdited._enableControlNodes(); - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + var locale = this.constants.locales[this.constants.locale]; - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + this.manipulationDiv.innerHTML = "" + + "" + + "" + locale['back'] + " " + + "
" + + "" + + "" + locale['editEdgeDescription'] + ""; - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); - var startCenter = cur.startEvent.center; + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this.cachedFunctions["_handleTap"] = this._handleTap; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleTouch = this._selectControlNode; + this._handleTap = function () {}; + this._handleOnDrag = this._controlNodeDrag; + this._handleDragStart = function () {} + this._handleOnRelease = this._releaseControlNode; - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // redraw to show the unselect + this._redraw(); + }; + + + + + + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._selectControlNode = function(pointer) { + this.edgeBeingEdited.controlNodes.from.unselect(); + this.edgeBeingEdited.controlNodes.to.unselect(); + this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); + if (this.selectedControlNode !== null) { + this.selectedControlNode.select(); + this.freezeSimulation = true; + } + this._redraw(); + }; - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._controlNodeDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { + this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); + this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + } + this._redraw(); + }; - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + exports._releaseControlNode = function(pointer) { + var newNode = this._getNodeAt(pointer); + if (newNode != null) { + if (this.edgeBeingEdited.controlNodes.from.selected == true) { + this._editEdge(newNode.id, this.edgeBeingEdited.to.id); + this.edgeBeingEdited.controlNodes.from.unselect(); + } + if (this.edgeBeingEdited.controlNodes.to.selected == true) { + this._editEdge(this.edgeBeingEdited.from.id, newNode.id); + this.edgeBeingEdited.controlNodes.to.unselect(); + } + } + else { + this.edgeBeingEdited._restoreControlNodes(); + } + this.freezeSimulation = false; + this._redraw(); + }; - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._handleConnect = function(pointer) { + if (this._getSelectedNodeCount() == 0) { + var node = this._getNodeAt(pointer); + var supportNodes, targetNode, targetViaNode, connectionEdge; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]['createEdgeError']) + } + else { + this._selectObject(node,false); + supportNodes = this.sectors['support']['nodes']; - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + // create a node the temporary line can look at + supportNodes['targetNode'] = targetNode = new Node({id:'targetNode'},{},{},this.constants); + targetNode.x = node.x; + targetNode.y = node.y; - var isVertical = Utils.isVertical(ev.direction); + supportNodes['targetViaNode'] = targetViaNode = new Node({id:'targetViaNode'},{},{},this.constants); + targetViaNode.x = node.x; + targetViaNode.y = node.y; + targetViaNode.parentEdgeId = "connectionEdge"; - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + // create a temporary edge + this.edges['connectionEdge'] = connectionEdge = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); + connectionEdge.from = node; + connectionEdge.connected = true; + connectionEdge.smooth = true; + connectionEdge.selected = true; + connectionEdge.to = targetNode; + connectionEdge.via = targetViaNode; - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleOnDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + var supportNodes = this.sectors['support']['nodes']; + supportNodes['targetNode'].x = this._XconvertDOMtoCanvas(pointer.x); + supportNodes['targetNode'].y = this._YconvertDOMtoCanvas(pointer.y); + supportNodes['targetViaNode'].x = 0.5 * (this._XconvertDOMtoCanvas(pointer.x) + this.edges['connectionEdge'].from.x); + supportNodes['targetViaNode'].y = this._YconvertDOMtoCanvas(pointer.y); + }; - case EVENT_END: - triggered = false; - break; - } + this.moving = true; + this.start(); + } } + } + }; - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, - - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + exports._finishConnect = function(pointer) { + if (this._getSelectedNodeCount() == 1) { - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + // restore the drag function + this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; + delete this.cachedFunctions["_handleOnDrag"]; - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + // remember the edge id + var connectFromId = this.edges['connectionEdge'].fromId; - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // remove the temporary nodes and edge + delete this.edges['connectionEdge']; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]["createEdgeError"]) + } + else { + this._createEdge(connectFromId,node.id); + this._createManipulatorBar(); + } + } + this._unselectAll(); + } + }; - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev + * Adds a node on the specified location */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + exports._addNode = function() { + if (this._selectionIsEmpty() && this.editMode == true) { + var positionObject = this._pointerToPositionObject(this.pointerPosition); + var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; + if (this.triggerFunctions.add) { + if (this.triggerFunctions.add.length == 2) { + var me = this; + this.triggerFunctions.add(defaultData, function(finalizedData) { + me.nodesData.add(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for add does not support two arguments (data,callback)'); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + else { + this.nodesData.add(defaultData); + this._createManipulatorBar(); + this.moving = true; + this.start(); } + } }; + /** - * @module gestures - */ - /** - * Touch stays at the same place for x time + * connect two nodes with a new edge. * - * @class Hold - * @static + * @private */ + exports._createEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.connect) { + if (this.triggerFunctions.connect.length == 2) { + var me = this; + this.triggerFunctions.connect(defaultData, function(finalizedData) { + me.edgesData.add(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for connect does not support two arguments (data,callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.add(defaultData); + this.moving = true; + this.start(); + } + } + }; + /** - * @event hold - * @param {Object} ev + * connect two nodes with a new edge. + * + * @private */ + exports._editEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.editEdge) { + if (this.triggerFunctions.editEdge.length == 2) { + var me = this; + this.triggerFunctions.editEdge(defaultData, function(finalizedData) { + me.edgesData.update(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.update(defaultData); + this.moving = true; + this.start(); + } + } + }; /** - * @param {String} name + * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * + * @private */ - (function(name) { - var timer; - - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; - - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + exports._editNode = function() { + if (this.triggerFunctions.edit && this.editMode == true) { + var node = this._getSelectedNode(); + var data = {id:node.id, + label: node.label, + group: node.options.group, + shape: node.options.shape, + color: { + background:node.options.color.background, + border:node.options.color.border, + highlight: { + background:node.options.color.highlight.background, + border:node.options.color.highlight.border + } + }}; + if (this.triggerFunctions.edit.length == 2) { + var me = this; + this.triggerFunctions.edit(data, function (finalizedData) { + me.nodesData.update(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + } + } + else { + throw new Error('No edit function has been bound to this button'); + } + }; - // set the gesture so we can check in the timeout if it still is - current.name = name; - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; - case EVENT_RELEASE: - clearTimeout(timer); - break; + /** + * delete everything in the selection + * + * @private + */ + exports._deleteSelected = function() { + if (!this._selectionIsEmpty() && this.editMode == true) { + if (!this._clusterInSelection()) { + var selectedNodes = this.getSelectedNodes(); + var selectedEdges = this.getSelectedEdges(); + if (this.triggerFunctions.del) { + var me = this; + var data = {nodes: selectedNodes, edges: selectedEdges}; + if (this.triggerFunctions.del.length = 2) { + this.triggerFunctions.del(data, function (finalizedData) { + me.edgesData.remove(finalizedData.edges); + me.nodesData.remove(finalizedData.nodes); + me._unselectAll(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for delete does not support two arguments (data, callback)') } + } + else { + this.edgesData.remove(selectedEdges); + this.nodesData.remove(selectedNodes); + this._unselectAll(); + this.moving = true; + this.start(); + } } + else { + alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); + } + } + }; - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Hammer = __webpack_require__(42); + + exports._cleanNavigation = function() { + // clean up previous navigation items + var wrapper = document.getElementById('network-navigation_wrapper'); + if (wrapper && wrapper.parentNode) { + wrapper.parentNode.removeChild(wrapper); + } + document.onmouseup = null; + }; /** - * @module gestures + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. + * + * @private */ + exports._loadNavigationElements = function() { + this._cleanNavigation(); + + this.navigationDivs = {}; + var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; + var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','zoomExtent']; + + this.navigationDivs['wrapper'] = document.createElement('div'); + this.navigationDivs['wrapper'].id = 'network-navigation_wrapper'; + this.frame.appendChild(this.navigationDivs['wrapper']); + + var me = this; + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDivs[navigationDivs[i]] = document.createElement('div'); + this.navigationDivs[navigationDivs[i]].id = 'network-navigation_' + navigationDivs[i]; + this.navigationDivs[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; + this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); + var hammer = Hammer(this.navigationDivs[navigationDivs[i]], {prevent_default: true}); + hammer.on('touch', me[navigationDivActions[i]].bind(me)); + } + var hammer = Hammer(document, {prevent_default: false}); + hammer.on('release', me._stopMovement.bind(me)); + }; + /** - * when a touch is being released from the page + * this stops all movement induced by the navigation buttons * - * @class Release - * @static + * @private */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; + + /** - * @event release - * @param {Object} ev + * move the screen up + * By using the increments, instead of adding a fixed number to the translation, we keep fluent and + * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently + * To avoid this behaviour, we do the translation in the start loop. + * + * @private */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } + exports._moveUp = function(event) { + this.yIncrement = this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); }; + /** - * @module gestures + * move the screen down + * @private */ + exports._moveDown = function(event) { + this.yIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; + + /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static + * move the screen left + * @private */ + exports._moveLeft = function(event) { + this.xIncrement = this.constants.keyboard.speed.x; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; + + /** - * @event swipe - * @param {Object} ev + * move the screen right + * @private */ + exports._moveRight = function(event) { + this.xIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; + + /** - * @event swipeleft - * @param {Object} ev + * Zoom in, using the same method as the movement. + * @private */ + exports._zoomIn = function(event) { + this.zoomIncrement = this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; + + /** - * @event swiperight - * @param {Object} ev + * Zoom out + * @private */ + exports._zoomOut = function(event) { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; + + /** - * @event swipeup - * @param {Object} ev + * Stop zooming and unhighlight the zoom controls + * @private */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; + + /** - * @event swipedown - * @param {Object} ev + * Stop moving in the Y direction and unHighlight the up and down + * @private */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, - - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } } + } }; /** - * @module gestures - */ - /** - * Single tap and a double tap on a place + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ - - /** - * @param {String} name + * @private */ - (function(name) { - var hasMoved = false; - - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; - - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; - - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; - - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "DU") { + this.constants.hierarchicalLayout.levelSeparation *= -1; + } + else { + this.constants.hierarchicalLayout.levelSeparation = Math.abs(this.constants.hierarchicalLayout.levelSeparation); + } - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; } + } } - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent(undefined,true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(); + } - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + + // start the simulation. + this.start(); + } + } + }; - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); /** - * @module gestures - */ - /** - * when a touch is being touched at the page + * This function places the nodes on the canvas based on the hierarchial distribution. * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { - if(inst.options.preventDefault) { - ev.preventDefault(); - } + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); } + } } + } + + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); }; + /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. + * This function get the distribution of levels based on hubsize * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev + * @returns {Object} + * @private */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; + + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } + + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } + } + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } + + return distribution; + }; + + /** - * @event rotate - * @param {Object} ev + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private */ + exports._determineLevels = function(hubsize) { + var nodeId, node; + + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } + }; /** - * @param {String} name + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private */ - (function(name) { - var triggered = false; + exports._determineLevelsDirected = function() { + var nodeId, node; - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // set first node to source + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].level = 10000; + break; + } + } - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 10000) { + this._setLevelDirected(10000,node.edges,node.id); + } + } + } - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + // branch from hubs + var minLevel = 10000; + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; + } + } - // we are transforming! - Detection.current.name = name; + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } + } + }; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } - inst.trigger(name, ev); // basic transform event + /** + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private + */ + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); + }; - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } + } + } + }; - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, - handler: transformGesture - }; - })('transform'); + /** + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } + }; + /** - * @module hammer + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private */ + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + for (var i = 0; i < edges.length; i++) { + var childNode = null; + var direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } + } - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } + }; + + + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } + }; - })(window); /***/ }, /* 60 */ @@ -31434,17 +31639,11 @@ return /******/ (function(modules) { // webpackBootstrap /* 61 */ /***/ function(module, exports, __webpack_require__) { - var map = {}; function webpackContext(req) { - return __webpack_require__(webpackContextResolve(req)); - }; - function webpackContextResolve(req) { - return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); - }; - webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); - }; - webpackContext.resolve = webpackContextResolve; + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.resolve = webpackContext; + webpackContext.keys = function() { return []; }; module.exports = webpackContext; @@ -32094,4 +32293,4 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) -}) +}); diff --git a/dist/vis.map b/dist/vis.map index 8b614fab..03019553 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","end","duration","change","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setGroups","groups","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","time","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","setAttribute","baseClassName","onTop","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","_setTranslation","freezeSimulation","cachedFunctions","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","_getScale","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","easingFunction","animateView","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","active","networkConstants","fromId","toId","widthSelected","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","yLine","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","getTimezoneOffset","inputString","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","supportNodes","targetNode","targetViaNode","connectionEdge","alert","smooth","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","end","duration","change","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setGroups","groups","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","time","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","setAttribute","baseClassName","onTop","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","_setTranslation","freezeSimulation","cachedFunctions","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","_getScale","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","easingFunction","animateView","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","active","getScale","networkConstants","fromId","toId","widthSelected","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","yLine","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","getTimezoneOffset","inputString","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","supportNodes","targetNode","targetViaNode","connectionEdge","alert","smooth","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.css b/dist/vis.min.css index 159e7136..be8fefa9 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;width:100%;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;top:0;bottom:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) no-repeat top center;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;width:100%;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;top:0;bottom:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 5ff1bd9d..710c125e 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -28,11 +28,11 @@ var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.fram },s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var m=this.visibleItems[u];m.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:f,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:f,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null },t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=o0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s.prototype._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(42);s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e instanceof Element)t.innerHTML="",t.appendChild(e);else{if(void 0==e)throw new Error('Property "content" missing in item '+this.data.id);t.innerHTML=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0)for(var e=0;et.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw time axis: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.prototype.repositionX,s.prototype.repositionY=function(){var t="top"===this.options.orientation;this.dom.content.style.top=t?"":"0",this.dom.content.style.bottom=t?"0":""},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this.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}},this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(50),n=i(42),r=i(51),a=i(1),h=i(44),d=i(3),l=i(4),c=i(39),p=i(40),u=i(35),f=i(36),m=i(37),g=i(34),v=i(38),y=i(48),b=i(49),_=i(46);i(47),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*(Math.abs(o.minX)+Math.abs(o.maxX)),h=1.1*(Math.abs(o.minY)+Math.abs(o.maxY)),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s) -},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this.moving=!0,this.start())},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=this.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=1&&(this.easingTime=0,this._redraw=this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(37);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(o[d]).width;h=l>h?l:h}var c=this.options.fontSize*n,p=i-h/2,u=s-c/2;t.fillRect(p,u,h,c)}t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle";for(var d=0;n>d;d++)t.fillText(o[d],i,a),a+=r}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.options.smoothCurves.enabled){var r,a;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,f,m,g=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(f,m,p,u,o,n),g=g>d?d:g),f=p,m=u;return g}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=.25*this.physics.springLength,_=this.from;return _.width>_.height?(p=_.x+.5*_.width,u=_.y-b):(p=_.x+b,u=_.y-.5*_.height),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase; -break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.options.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace,t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;if(1==r&&(l=s+(1-h)/(2*d)),void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)}t.fillStyle=this.options.fontColor||"black";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=C.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=C.DELIMITER);var i=O+n();if(D[i])return k=C.DELIMITER,L=i,o(),void o();if(D[O])return k=C.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=C.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==C.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},D={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":""; -s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(60),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(51),r=i(50),a=i(42),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in D)t[e]?i=!0:D[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){D[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++D[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},D={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Oe.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Se.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){_i[t]||(d(e),_i[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Se.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Fe.length>0)for(i in Fe)s=Fe[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ui[t]||fi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Se[t]=function(s,o){var r,a,h=Se._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Se().utc().set(i,t);return h.call(Se._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return ce(Se([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ke]<0||t._a[ke]>11?ke:t._a[Ne]<1||t._a[Ne]>N(t._a[Le],t._a[ke])?Ne:t._a[Ie]<0||t._a[Ie]>23?Ie:t._a[Ae]<0||t._a[Ae]>59?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>999?Pe:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ne)&&(e=Ne),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Re[t]&&He)try{e=Se.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Se.locale(e)}catch(i){}return Re[t]}function B(t,e){return e._isUTC?Se(t).zone(e._offset||0):Se(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(Ge);for(e=0,i=s.length;i>e;e++)s[e]=bi[s[e]]?bi[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),mi[e]||(mi[e]=G(e)),mi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(je.lastIndex=0;s>=0&&je.test(t);)t=t.replace(je,i),je.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ei;case"DDDD":return si;case"YYYY":case"GGGG":case"gggg":return s?oi:Xe;case"Y":case"G":case"g":return ri;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ni:Ze;case"S":if(s)return ei;case"SS":if(s)return ii;case"SSS":if(s)return si;case"DDD":return Ve;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ke;case"a":case"A":return e._locale._meridiemParse;case"X":return Je;case"Z":case"ZZ":return Qe;case"T":return $e;case"SSSS":return qe;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ii:Ue;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ue;case"Do":return ti;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match(Qe)||[],i=e[e.length-1]||[],s=(i+"").match(ci)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ke]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[ke]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[ke]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ne]=k(e));break;case"Do":null!=e&&(o[Ne]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[Le]=Se.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ie]=k(e);break;case"m":case"mm":o[Ae]=k(e);break;case"s":case"ss":o[ze]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Pe]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Se.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],ce(Se(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],ce(Se(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=pe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ne]&&null==t._a[ke]&&q(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=ae(o,0,t._dayOfYear),t._a[ke]=i.getUTCMonth(),t._a[Ne]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?ae:re).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Se.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(Ge)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),bi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ie]<12&&(t._a[Ie]+=12),t._isPm===!1&&12===t._a[Ie]&&(t._a[Ie]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=ai.exec(s);if(o){for(t._pf.iso=!0,e=0,i=di.length;i>e;e++)if(di[e][1].exec(s)){t._f=di[e][0]+(o[6]||" ");break}for(e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f+=li[e][0];break}s.match(Qe)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Se.createFromInputFallback(t))}function ne(t){var e,i=t._i;i===n?t._d=new Date:D(i)?t._d=new Date(+i):null!==(e=Ye.exec(i))?t._d=new Date(+e[1]):"string"==typeof i?oe(t):C(i)?(t._a=i.slice(0),K(t)):"object"==typeof i?Q(t):"number"==typeof i?t._d=new Date(i):Se.createFromInputFallback(t)}function re(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ae(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function he(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function de(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function le(t,e,i){var s=Se.duration(t).abs(),o=Te(s.as("s")),n=Te(s.as("m")),r=Te(s.as("h")),a=Te(s.as("d")),h=Te(s.as("M")),d=Te(s.as("y")),l=o0,l[4]=i,de.apply({},l)}function ce(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Se(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function pe(t,e,i,s,o){var n,r,a=ae(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ue(t){var e=t._i,i=t._f;return t._locale=t._locale||Se.localeData(t._l),null===e||i===n&&""===e?Se.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Se.isMoment(e)?new m(e,!0):(i?C(i)?ie(t):J(t):ne(t),new m(t)))}function fe(t,e){var i,s;if(1===e.length&&C(e[0])&&(e=e[0]),!e.length)return Se();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3) -},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},_i={},xi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];vi.length;)Ce=vi.pop(),bi[Ce+"o"]=u(bi[Ce],Ce);for(;yi.length;)Ce=yi.pop(),bi[Ce+Ce]=p(bi[Ce],2);bi.DDDD=p(bi.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Se.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Se([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return ce(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Se=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ue(o)},Se.suppressDeprecationWarnings=!1,Se.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Se.min=function(){var t=[].slice.call(arguments,0);return fe("isBefore",t)},Se.max=function(){var t=[].slice.call(arguments,0);return fe("isAfter",t)},Se.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ue(o).utc()},Se.unix=function(t){return Se(1e3*t)},Se.duration=function(t,e){var i,s,o,n,r=t,h=null;return Se.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=Be.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ne])*i,h:k(h[Ie])*i,m:k(h[Ae])*i,s:k(h[ze])*i,ms:k(h[Pe])*i}):(h=We.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Se(r.from),Se(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Se.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Se.version=De,Se.defaultFormat=hi,Se.ISO_8601=function(){},Se.momentProperties=Fe,Se.updateOffset=function(){},Se.relativeTimeThreshold=function(t,e){return gi[t]===n?!1:e===n?gi[t]:(gi[t]=e,!0)},Se.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Se.locale(t,e)}),Se.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Se.defineLocale(t,e):Se.localeData(t),i&&(Se.duration._locale=Se._locale=i)),Se._locale._abbr},Se.defineLocale=function(t,e){return null!==e?(e.abbr=t,Re[t]||(Re[t]=new f),Re[t].set(e),Se.locale(t),Re[t]):(delete Re[t],null)},Se.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Se.localeData(t)}),Se.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Se._locale;if(!C(t)){if(e=Y(t))return e;t=[t]}return H(t)},Se.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Se.isDuration=function(t){return t instanceof g};for(Ce=xi.length-1;Ce>=0;--Ce)L(xi[Ce]);Se.normalizeUnits=function(t){return T(t)},Se.invalid=function(t){var e=Se.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Se.parseZone=function(){return Se.apply(null,arguments).parseZone()},Se.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Se.fn=m.prototype,{clone:function(){return Se(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Se(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(t){var e=j(this,t||Se.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=B(t,this),r=6e4*(this.zone()-n.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-Se(this).startOf("month")-(n-Se(n).startOf("month")))/s,o-=6e4*(this.zone()-Se(this).startOf("month").zone()-(n.zone()-Se(n).startOf("month").zone()))/s,"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:b(o)},from:function(t,e){return Se.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Se(),t)},calendar:function(t){var e=t||Se(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+Se(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+Se(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Se.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Se.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._d.getTimezoneOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._d.getTimezoneOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Se.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Se.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Se(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Te((Se(this).startOf("day")-Se(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=ce(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=ce(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=ce(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){return t===n?this._locale._abbr:(this._locale=Se.localeData(t),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():(this._locale=Se.localeData(t),this)}),localeData:function(){return this._locale}}),Se.fn.millisecond=Se.fn.milliseconds=ye("Milliseconds",!1),Se.fn.second=Se.fn.seconds=ye("Seconds",!1),Se.fn.minute=Se.fn.minutes=ye("Minutes",!1),Se.fn.hour=Se.fn.hours=ye("Hours",!0),Se.fn.date=ye("Date",!0),Se.fn.dates=l("dates accessor is deprecated. Use date instead.",ye("Date",!0)),Se.fn.year=ye("FullYear",!0),Se.fn.years=l("years accessor is deprecated. Use year instead.",ye("FullYear",!0)),Se.fn.days=Se.fn.day,Se.fn.months=Se.fn.month,Se.fn.weeks=Se.fn.week,Se.fn.isoWeeks=Se.fn.isoWeek,Se.fn.quarters=Se.fn.quarter,Se.fn.toJSON=Se.fn.toISOString,v(Se.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(be(o)),o-=b(_e(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=le(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Se.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Se.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),e=this._days+this._milliseconds/864e5,"month"===t||"year"===t)return i=this._months+12*be(e),"month"===t?i:i/12;switch(e+=_e(this._months/12),t){case"week":return e/7;case"day":return e;case"hour":return 24*e;case"minute":return 24*e*60;case"second":return 24*e*60*60;case"millisecond":return 24*e*60*60*1e3;default:throw new Error("Unknown unit "+t)}},lang:Se.fn.lang,locale:Se.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Se.duration.fn.toString=Se.duration.fn.toISOString;for(Ce in pi)a(pi,Ce)&&xe(Ce.toLowerCase());Se.duration.fn.asMilliseconds=function(){return this.as("ms")},Se.duration.fn.asSeconds=function(){return this.as("s")},Se.duration.fn.asMinutes=function(){return this.as("m")},Se.duration.fn.asHours=function(){return this.as("h")},Se.duration.fn.asDays=function(){return this.as("d")},Se.duration.fn.asWeeks=function(){return this.as("weeks")},Se.duration.fn.asMonths=function(){return this.as("M")},Se.duration.fn.asYears=function(){return this.as("y")},Se.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),He?o.exports=Se:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Ee.moment=Me),Se}.call(e,i,e,o),!(s!==n&&(o.exports=s)),we(!0))}).call(this)}).call(e,function(){return this}(),i(65)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(37),n=i(34);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e,i,s,r,a=this._getNodeAt(t);null!=a&&(a.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._selectObject(a,!1),e=this.sectors.support.nodes,e.targetNode=i=new o({id:"targetNode"},{},{},this.constants),i.x=a.x,i.y=a.y,e.targetViaNode=s=new o({id:"targetViaNode"},{},{},this.constants),s.x=a.x,s.y=a.y,s.parentEdgeId="connectionEdge",this.edges.connectionEdge=r=new n({id:"connectionEdge",from:a.id,to:i.id},this,this.constants),r.from=a,r.connected=!0,r.smooth=!0,r.selected=!0,r.to=i,r.via=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.sectors.support.nodes;i.targetNode.x=this._XconvertDOMtoCanvas(e.x),i.targetNode.y=this._YconvertDOMtoCanvas(e.y),i.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),i.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}}; -if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(42));e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");t&&t.parentNode&&t.parentNode.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.frame.appendChild(this.navigationDivs.wrapper);for(var i=this,o=0;o0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.resolve=e,e.keys=function(){return[]},t.exports=e},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t)) -}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this.moving=!0,this.start())},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=this.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=1&&(this.easingTime=0,this._redraw=this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(37);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(o[d]).width;h=l>h?l:h}var c=this.options.fontSize*n,p=i-h/2,u=s-c/2;t.fillRect(p,u,h,c)}t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle";for(var d=0;n>d;d++)t.fillText(o[d],i,a),a+=r}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.options.smoothCurves.enabled){var r,a;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,f,m,g=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(f,m,p,u,o,n),g=g>d?d:g),f=p,m=u;return g}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=.25*this.physics.springLength,_=this.from;return _.width>_.height?(p=_.x+.5*_.width,u=_.y-b):(p=_.x+b,u=_.y-.5*_.height),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage) +}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.options.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace,t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;if(1==r&&(l=s+(1-h)/(2*d)),void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)}t.fillStyle=this.options.fontColor||"black";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=C.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=C.DELIMITER);var i=O+n();if(D[i])return k=C.DELIMITER,L=i,o(),void o();if(D[O])return k=C.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=C.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==C.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},D={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop; +"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(60),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(51),r=i(50),a=i(42),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in D)t[e]?i=!0:D[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){D[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++D[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},D={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Oe.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Se.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){_i[t]||(d(e),_i[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Se.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Fe.length>0)for(i in Fe)s=Fe[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ui[t]||fi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Se[t]=function(s,o){var r,a,h=Se._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Se().utc().set(i,t);return h.call(Se._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return ce(Se([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ke]<0||t._a[ke]>11?ke:t._a[Ne]<1||t._a[Ne]>N(t._a[Le],t._a[ke])?Ne:t._a[Ie]<0||t._a[Ie]>23?Ie:t._a[Ae]<0||t._a[Ae]>59?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>999?Pe:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ne)&&(e=Ne),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Re[t]&&He)try{e=Se.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Se.locale(e)}catch(i){}return Re[t]}function B(t,e){return e._isUTC?Se(t).zone(e._offset||0):Se(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(Ge);for(e=0,i=s.length;i>e;e++)s[e]=bi[s[e]]?bi[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),mi[e]||(mi[e]=G(e)),mi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(je.lastIndex=0;s>=0&&je.test(t);)t=t.replace(je,i),je.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ei;case"DDDD":return si;case"YYYY":case"GGGG":case"gggg":return s?oi:Xe;case"Y":case"G":case"g":return ri;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ni:Ze;case"S":if(s)return ei;case"SS":if(s)return ii;case"SSS":if(s)return si;case"DDD":return Ve;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ke;case"a":case"A":return e._locale._meridiemParse;case"X":return Je;case"Z":case"ZZ":return Qe;case"T":return $e;case"SSSS":return qe;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ii:Ue;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ue;case"Do":return ti;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match(Qe)||[],i=e[e.length-1]||[],s=(i+"").match(ci)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ke]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[ke]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[ke]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ne]=k(e));break;case"Do":null!=e&&(o[Ne]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[Le]=Se.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ie]=k(e);break;case"m":case"mm":o[Ae]=k(e);break;case"s":case"ss":o[ze]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Pe]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Se.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],ce(Se(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],ce(Se(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=pe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ne]&&null==t._a[ke]&&q(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=ae(o,0,t._dayOfYear),t._a[ke]=i.getUTCMonth(),t._a[Ne]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?ae:re).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Se.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(Ge)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),bi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ie]<12&&(t._a[Ie]+=12),t._isPm===!1&&12===t._a[Ie]&&(t._a[Ie]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=ai.exec(s);if(o){for(t._pf.iso=!0,e=0,i=di.length;i>e;e++)if(di[e][1].exec(s)){t._f=di[e][0]+(o[6]||" ");break}for(e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f+=li[e][0];break}s.match(Qe)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Se.createFromInputFallback(t))}function ne(t){var e,i=t._i;i===n?t._d=new Date:D(i)?t._d=new Date(+i):null!==(e=Ye.exec(i))?t._d=new Date(+e[1]):"string"==typeof i?oe(t):C(i)?(t._a=i.slice(0),K(t)):"object"==typeof i?Q(t):"number"==typeof i?t._d=new Date(i):Se.createFromInputFallback(t)}function re(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ae(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function he(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function de(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function le(t,e,i){var s=Se.duration(t).abs(),o=Te(s.as("s")),n=Te(s.as("m")),r=Te(s.as("h")),a=Te(s.as("d")),h=Te(s.as("M")),d=Te(s.as("y")),l=o0,l[4]=i,de.apply({},l)}function ce(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Se(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function pe(t,e,i,s,o){var n,r,a=ae(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ue(t){var e=t._i,i=t._f;return t._locale=t._locale||Se.localeData(t._l),null===e||i===n&&""===e?Se.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Se.isMoment(e)?new m(e,!0):(i?C(i)?ie(t):J(t):ne(t),new m(t)))}function fe(t,e){var i,s;if(1===e.length&&C(e[0])&&(e=e[0]),!e.length)return Se();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1) +},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},_i={},xi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];vi.length;)Ce=vi.pop(),bi[Ce+"o"]=u(bi[Ce],Ce);for(;yi.length;)Ce=yi.pop(),bi[Ce+Ce]=p(bi[Ce],2);bi.DDDD=p(bi.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Se.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Se([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return ce(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Se=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ue(o)},Se.suppressDeprecationWarnings=!1,Se.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Se.min=function(){var t=[].slice.call(arguments,0);return fe("isBefore",t)},Se.max=function(){var t=[].slice.call(arguments,0);return fe("isAfter",t)},Se.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ue(o).utc()},Se.unix=function(t){return Se(1e3*t)},Se.duration=function(t,e){var i,s,o,n,r=t,h=null;return Se.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=Be.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ne])*i,h:k(h[Ie])*i,m:k(h[Ae])*i,s:k(h[ze])*i,ms:k(h[Pe])*i}):(h=We.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Se(r.from),Se(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Se.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Se.version=De,Se.defaultFormat=hi,Se.ISO_8601=function(){},Se.momentProperties=Fe,Se.updateOffset=function(){},Se.relativeTimeThreshold=function(t,e){return gi[t]===n?!1:e===n?gi[t]:(gi[t]=e,!0)},Se.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Se.locale(t,e)}),Se.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Se.defineLocale(t,e):Se.localeData(t),i&&(Se.duration._locale=Se._locale=i)),Se._locale._abbr},Se.defineLocale=function(t,e){return null!==e?(e.abbr=t,Re[t]||(Re[t]=new f),Re[t].set(e),Se.locale(t),Re[t]):(delete Re[t],null)},Se.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Se.localeData(t)}),Se.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Se._locale;if(!C(t)){if(e=Y(t))return e;t=[t]}return H(t)},Se.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Se.isDuration=function(t){return t instanceof g};for(Ce=xi.length-1;Ce>=0;--Ce)L(xi[Ce]);Se.normalizeUnits=function(t){return T(t)},Se.invalid=function(t){var e=Se.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Se.parseZone=function(){return Se.apply(null,arguments).parseZone()},Se.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Se.fn=m.prototype,{clone:function(){return Se(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Se(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(t){var e=j(this,t||Se.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=B(t,this),r=6e4*(this.zone()-n.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-Se(this).startOf("month")-(n-Se(n).startOf("month")))/s,o-=6e4*(this.zone()-Se(this).startOf("month").zone()-(n.zone()-Se(n).startOf("month").zone()))/s,"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:b(o)},from:function(t,e){return Se.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Se(),t)},calendar:function(t){var e=t||Se(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+Se(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+Se(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Se.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Se.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._d.getTimezoneOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._d.getTimezoneOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Se.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Se.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Se(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Te((Se(this).startOf("day")-Se(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=ce(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=ce(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=ce(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){return t===n?this._locale._abbr:(this._locale=Se.localeData(t),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():(this._locale=Se.localeData(t),this)}),localeData:function(){return this._locale}}),Se.fn.millisecond=Se.fn.milliseconds=ye("Milliseconds",!1),Se.fn.second=Se.fn.seconds=ye("Seconds",!1),Se.fn.minute=Se.fn.minutes=ye("Minutes",!1),Se.fn.hour=Se.fn.hours=ye("Hours",!0),Se.fn.date=ye("Date",!0),Se.fn.dates=l("dates accessor is deprecated. Use date instead.",ye("Date",!0)),Se.fn.year=ye("FullYear",!0),Se.fn.years=l("years accessor is deprecated. Use year instead.",ye("FullYear",!0)),Se.fn.days=Se.fn.day,Se.fn.months=Se.fn.month,Se.fn.weeks=Se.fn.week,Se.fn.isoWeeks=Se.fn.isoWeek,Se.fn.quarters=Se.fn.quarter,Se.fn.toJSON=Se.fn.toISOString,v(Se.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(be(o)),o-=b(_e(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=le(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Se.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Se.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),e=this._days+this._milliseconds/864e5,"month"===t||"year"===t)return i=this._months+12*be(e),"month"===t?i:i/12;switch(e+=_e(this._months/12),t){case"week":return e/7;case"day":return e;case"hour":return 24*e;case"minute":return 24*e*60;case"second":return 24*e*60*60;case"millisecond":return 24*e*60*60*1e3;default:throw new Error("Unknown unit "+t)}},lang:Se.fn.lang,locale:Se.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Se.duration.fn.toString=Se.duration.fn.toISOString;for(Ce in pi)a(pi,Ce)&&xe(Ce.toLowerCase());Se.duration.fn.asMilliseconds=function(){return this.as("ms")},Se.duration.fn.asSeconds=function(){return this.as("s")},Se.duration.fn.asMinutes=function(){return this.as("m")},Se.duration.fn.asHours=function(){return this.as("h")},Se.duration.fn.asDays=function(){return this.as("d")},Se.duration.fn.asWeeks=function(){return this.as("weeks")},Se.duration.fn.asMonths=function(){return this.as("M")},Se.duration.fn.asYears=function(){return this.as("y")},Se.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),He?o.exports=Se:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Ee.moment=Me),Se}.call(e,i,e,o),!(s!==n&&(o.exports=s)),we(!0))}).call(this)}).call(e,function(){return this}(),i(65)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e) +}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(37),n=i(34);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e,i,s,r,a=this._getNodeAt(t);null!=a&&(a.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._selectObject(a,!1),e=this.sectors.support.nodes,e.targetNode=i=new o({id:"targetNode"},{},{},this.constants),i.x=a.x,i.y=a.y,e.targetViaNode=s=new o({id:"targetViaNode"},{},{},this.constants),s.x=a.x,s.y=a.y,s.parentEdgeId="connectionEdge",this.edges.connectionEdge=r=new n({id:"connectionEdge",from:a.id,to:i.id},this,this.constants),r.from=a,r.connected=!0,r.smooth=!0,r.selected=!0,r.to=i,r.via=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.sectors.support.nodes;i.targetNode.x=this._XconvertDOMtoCanvas(e.x),i.targetNode.y=this._YconvertDOMtoCanvas(e.y),i.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),i.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start() +}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(42));e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");t&&t.parentNode&&t.parentNode.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.frame.appendChild(this.navigationDivs.wrapper);for(var i=this,o=0;o0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.resolve=e,e.keys=function(){return[]},t.exports=e},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map \ No newline at end of file