diff --git a/.idea/CodeName.iml b/.idea/CodeName.iml new file mode 100644 index 0000000..a027b29 --- /dev/null +++ b/.idea/CodeName.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..6bb4cdc --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1630315917609 + + + 1630326698814 + + + + + + + + + + + + + + + file://$PROJECT_DIR$/playground.py + 42 + + + + + + + + + \ No newline at end of file diff --git a/__pycache__/functions.cpython-39.pyc b/__pycache__/functions.cpython-39.pyc index 17478fb..d8159c1 100644 Binary files a/__pycache__/functions.cpython-39.pyc and b/__pycache__/functions.cpython-39.pyc differ diff --git a/__pycache__/words.cpython-39.pyc b/__pycache__/words.cpython-39.pyc index 43c1169..15e2241 100644 Binary files a/__pycache__/words.cpython-39.pyc and b/__pycache__/words.cpython-39.pyc differ diff --git a/nx.html b/nx.html new file mode 100644 index 0000000..d9f8e1f --- /dev/null +++ b/nx.html @@ -0,0 +1,123 @@ + + + + +
+

+
+ + + + + + + + +
+ + +
+ + + + \ No newline at end of file diff --git a/vis-network.min.js b/vis-network.min.js new file mode 100644 index 0000000..dba86d9 --- /dev/null +++ b/vis-network.min.js @@ -0,0 +1,19363 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.16.1 + * @date 2016-04-18 + * + * @license + * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict"; +!function(e, t) { + "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.vis = t() : e.vis = t() +}(this, function() { + return function(e) { + function t(o) { + if (i[o]) + return i[o].exports; + var n = i[o] = { + exports: {}, + id: o, + loaded: !1 + }; + return e[o].call(n.exports, n, n.exports, t), + n.loaded = !0, + n.exports + } + var i = {}; + return t.m = e, + t.c = i, + t.p = "", + t(0) + }([function(e, t, i) { + t.util = i(1), + t.DOMutil = i(7), + t.DataSet = i(8), + t.DataView = i(10), + t.Queue = i(9), + t.Network = i(11), + t.network = { + Images: i(12), + dotparser: i(77), + gephiParser: i(78), + allOptions: i(72) + }, + t.network.convertDot = function(e) { + return t.network.dotparser.DOTToGraph(e) + } + , + t.network.convertGephi = function(e, i) { + return t.network.gephiParser.parseGephi(e, i) + } + , + t.moment = i(2), + t.Hammer = i(58), + t.keycharm = i(65) + } + , function(e, t, i) { + var o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , n = i(2) + , s = i(6); + t.isNumber = function(e) { + return e instanceof Number || "number" == typeof e + } + , + t.recursiveDOMDelete = function(e) { + if (e) + for (; e.hasChildNodes() === !0; ) + t.recursiveDOMDelete(e.firstChild), + e.removeChild(e.firstChild) + } + , + t.giveRange = function(e, t, i, o) { + if (t == e) + return .5; + var n = 1 / (t - e); + return Math.max(0, (o - e) * n) + } + , + t.isString = function(e) { + return e instanceof String || "string" == typeof e + } + , + t.isDate = function(e) { + if (e instanceof Date) + return !0; + if (t.isString(e)) { + var i = r.exec(e); + if (i) + return !0; + if (!isNaN(Date.parse(e))) + return !0 + } + return !1 + } + , + t.randomUUID = function() { + return s.v4() + } + , + t.assignAllKeys = function(e, t) { + for (var i in e) + e.hasOwnProperty(i) && "object" !== o(e[i]) && (e[i] = t) + } + , + t.fillIfDefined = function(e, i) { + var n = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2]; + for (var s in e) + void 0 !== i[s] && ("object" !== o(i[s]) ? void 0 !== i[s] && null !== i[s] || void 0 === e[s] || n !== !0 ? e[s] = i[s] : delete e[s] : "object" === o(e[s]) && t.fillIfDefined(e[s], i[s], n)) + } + , + t.protoExtend = function(e, t) { + for (var i = 1; i < arguments.length; i++) { + var o = arguments[i]; + for (var n in o) + e[n] = o[n] + } + return e + } + , + t.extend = function(e, t) { + for (var i = 1; i < arguments.length; i++) { + var o = arguments[i]; + for (var n in o) + o.hasOwnProperty(n) && (e[n] = o[n]) + } + return e + } + , + t.selectiveExtend = function(e, t, i) { + if (!Array.isArray(e)) + throw new Error("Array with property names expected as first argument"); + for (var o = 2; o < arguments.length; o++) + for (var n = arguments[o], s = 0; s < e.length; s++) { + var r = e[s]; + n.hasOwnProperty(r) && (t[r] = n[r]) + } + return t + } + , + t.selectiveDeepExtend = function(e, i, o) { + var n = arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3]; + if (Array.isArray(o)) + throw new TypeError("Arrays are not supported by deepExtend"); + for (var s = 2; s < arguments.length; s++) + for (var r = arguments[s], a = 0; a < e.length; a++) { + var h = e[a]; + if (r.hasOwnProperty(h)) + if (o[h] && o[h].constructor === Object) + void 0 === i[h] && (i[h] = {}), + i[h].constructor === Object ? t.deepExtend(i[h], o[h], !1, n) : null === o[h] && void 0 !== i[h] && n === !0 ? delete i[h] : i[h] = o[h]; + else { + if (Array.isArray(o[h])) + throw new TypeError("Arrays are not supported by deepExtend"); + null === o[h] && void 0 !== i[h] && n === !0 ? delete i[h] : i[h] = o[h] + } + } + return i + } + , + t.selectiveNotDeepExtend = function(e, i, o) { + var n = arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3]; + if (Array.isArray(o)) + throw new TypeError("Arrays are not supported by deepExtend"); + for (var s in o) + if (o.hasOwnProperty(s) && -1 == e.indexOf(s)) + if (o[s] && o[s].constructor === Object) + void 0 === i[s] && (i[s] = {}), + i[s].constructor === Object ? t.deepExtend(i[s], o[s]) : null === o[s] && void 0 !== i[s] && n === !0 ? delete i[s] : i[s] = o[s]; + else if (Array.isArray(o[s])) { + i[s] = []; + for (var r = 0; r < o[s].length; r++) + i[s].push(o[s][r]) + } else + null === o[s] && void 0 !== i[s] && n === !0 ? delete i[s] : i[s] = o[s]; + return i + } + , + t.deepExtend = function(e, i, o, n) { + for (var s in i) + if (i.hasOwnProperty(s) || o === !0) + if (i[s] && i[s].constructor === Object) + void 0 === e[s] && (e[s] = {}), + e[s].constructor === Object ? t.deepExtend(e[s], i[s], o) : null === i[s] && void 0 !== e[s] && n === !0 ? delete e[s] : e[s] = i[s]; + else if (Array.isArray(i[s])) { + e[s] = []; + for (var r = 0; r < i[s].length; r++) + e[s].push(i[s][r]) + } else + null === i[s] && void 0 !== e[s] && n === !0 ? delete e[s] : e[s] = i[s]; + return e + } + , + t.equalArray = function(e, t) { + if (e.length != t.length) + return !1; + for (var i = 0, o = e.length; o > i; i++) + if (e[i] != t[i]) + return !1; + return !0 + } + , + t.convert = function(e, i) { + var o; + if (void 0 !== e) { + if (null === e) + return null; + if (!i) + return e; + if ("string" != typeof i && !(i instanceof String)) + throw new Error("Type must be a string"); + switch (i) { + case "boolean": + case "Boolean": + return Boolean(e); + case "number": + case "Number": + return Number(e.valueOf()); + case "string": + case "String": + return String(e); + case "Date": + if (t.isNumber(e)) + return new Date(e); + if (e instanceof Date) + return new Date(e.valueOf()); + if (n.isMoment(e)) + return new Date(e.valueOf()); + if (t.isString(e)) + return o = r.exec(e), + o ? new Date(Number(o[1])) : n(e).toDate(); + throw new Error("Cannot convert object of type " + t.getType(e) + " to type Date"); + case "Moment": + if (t.isNumber(e)) + return n(e); + if (e instanceof Date) + return n(e.valueOf()); + if (n.isMoment(e)) + return n(e); + if (t.isString(e)) + return o = r.exec(e), + n(o ? Number(o[1]) : e); + throw new Error("Cannot convert object of type " + t.getType(e) + " to type Date"); + case "ISODate": + if (t.isNumber(e)) + return new Date(e); + if (e instanceof Date) + return e.toISOString(); + if (n.isMoment(e)) + return e.toDate().toISOString(); + if (t.isString(e)) + return o = r.exec(e), + o ? new Date(Number(o[1])).toISOString() : new Date(e).toISOString(); + throw new Error("Cannot convert object of type " + t.getType(e) + " to type ISODate"); + case "ASPDate": + if (t.isNumber(e)) + return "/Date(" + e + ")/"; + if (e instanceof Date) + return "/Date(" + e.valueOf() + ")/"; + if (t.isString(e)) { + o = r.exec(e); + var s; + return s = o ? new Date(Number(o[1])).valueOf() : new Date(e).valueOf(), + "/Date(" + s + ")/" + } + throw new Error("Cannot convert object of type " + t.getType(e) + " to type ASPDate"); + default: + throw new Error('Unknown type "' + i + '"') + } + } + } + ; + var r = /^\/?Date\((\-?\d+)/i; + t.getType = function(e) { + var t = "undefined" == typeof e ? "undefined" : o(e); + return "object" == t ? null === e ? "null" : e instanceof Boolean ? "Boolean" : e instanceof Number ? "Number" : e instanceof String ? "String" : Array.isArray(e) ? "Array" : e instanceof Date ? "Date" : "Object" : "number" == t ? "Number" : "boolean" == t ? "Boolean" : "string" == t ? "String" : void 0 === t ? "undefined" : t + } + , + t.copyAndExtendArray = function(e, t) { + for (var i = [], o = 0; o < e.length; o++) + i.push(e[o]); + return i.push(t), + i + } + , + t.copyArray = function(e) { + for (var t = [], i = 0; i < e.length; i++) + t.push(e[i]); + return t + } + , + t.getAbsoluteLeft = function(e) { + return e.getBoundingClientRect().left + } + , + t.getAbsoluteRight = function(e) { + return e.getBoundingClientRect().right + } + , + t.getAbsoluteTop = function(e) { + return e.getBoundingClientRect().top + } + , + t.addClassName = function(e, t) { + var i = e.className.split(" "); + -1 == i.indexOf(t) && (i.push(t), + e.className = i.join(" ")) + } + , + t.removeClassName = function(e, t) { + var i = e.className.split(" ") + , o = i.indexOf(t); + -1 != o && (i.splice(o, 1), + e.className = i.join(" ")) + } + , + t.forEach = function(e, t) { + var i, o; + if (Array.isArray(e)) + for (i = 0, + o = e.length; o > i; i++) + t(e[i], i, e); + else + for (i in e) + e.hasOwnProperty(i) && t(e[i], i, e) + } + , + t.toArray = function(e) { + var t = []; + for (var i in e) + e.hasOwnProperty(i) && t.push(e[i]); + return t + } + , + t.updateProperty = function(e, t, i) { + return e[t] !== i ? (e[t] = i, + !0) : !1 + } + , + t.throttle = function(e, t) { + var i = null + , o = !1; + return function n() { + i ? o = !0 : (o = !1, + e(), + i = setTimeout(function() { + i = null, + o && n() + }, t)) + } + } + , + t.addEventListener = function(e, t, i, o) { + e.addEventListener ? (void 0 === o && (o = !1), + "mousewheel" === t && navigator.userAgent.indexOf("Firefox") >= 0 && (t = "DOMMouseScroll"), + e.addEventListener(t, i, o)) : e.attachEvent("on" + t, i) + } + , + t.removeEventListener = function(e, t, i, o) { + e.removeEventListener ? (void 0 === o && (o = !1), + "mousewheel" === t && navigator.userAgent.indexOf("Firefox") >= 0 && (t = "DOMMouseScroll"), + e.removeEventListener(t, i, o)) : e.detachEvent("on" + t, i) + } + , + t.preventDefault = function(e) { + e || (e = window.event), + e.preventDefault ? e.preventDefault() : e.returnValue = !1 + } + , + t.getTarget = function(e) { + e || (e = window.event); + var t; + return e.target ? t = e.target : e.srcElement && (t = e.srcElement), + void 0 != t.nodeType && 3 == t.nodeType && (t = t.parentNode), + t + } + , + t.hasParent = function(e, t) { + for (var i = e; i; ) { + if (i === t) + return !0; + i = i.parentNode + } + return !1 + } + , + t.option = {}, + t.option.asBoolean = function(e, t) { + return "function" == typeof e && (e = e()), + null != e ? 0 != e : t || null + } + , + t.option.asNumber = function(e, t) { + return "function" == typeof e && (e = e()), + null != e ? Number(e) || t || null : t || null + } + , + t.option.asString = function(e, t) { + return "function" == typeof e && (e = e()), + null != e ? String(e) : t || null + } + , + t.option.asSize = function(e, i) { + return "function" == typeof e && (e = e()), + t.isString(e) ? e : t.isNumber(e) ? e + "px" : i || null + } + , + t.option.asElement = function(e, t) { + return "function" == typeof e && (e = e()), + e || t || null + } + , + t.hexToRGB = function(e) { + var t = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + e = e.replace(t, function(e, t, i, o) { + return t + t + i + i + o + o + }); + var i = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e); + return i ? { + r: parseInt(i[1], 16), + g: parseInt(i[2], 16), + b: parseInt(i[3], 16) + } : null + } + , + t.overrideOpacity = function(e, i) { + if (-1 != e.indexOf("rgba")) + return e; + if (-1 != e.indexOf("rgb")) { + var o = e.substr(e.indexOf("(") + 1).replace(")", "").split(","); + return "rgba(" + o[0] + "," + o[1] + "," + o[2] + "," + i + ")" + } + var o = t.hexToRGB(e); + return null == o ? e : "rgba(" + o.r + "," + o.g + "," + o.b + "," + i + ")" + } + , + t.RGBToHex = function(e, t, i) { + return "#" + ((1 << 24) + (e << 16) + (t << 8) + i).toString(16).slice(1) + } + , + t.parseColor = function(e) { + var i; + if (t.isString(e) === !0) { + if (t.isValidRGB(e) === !0) { + var o = e.substr(4).substr(0, e.length - 5).split(",").map(function(e) { + return parseInt(e) + }); + e = t.RGBToHex(o[0], o[1], o[2]) + } + if (t.isValidHex(e) === !0) { + var n = t.hexToHSV(e) + , s = { + h: n.h, + s: .8 * n.s, + v: Math.min(1, 1.02 * n.v) + } + , r = { + h: n.h, + s: Math.min(1, 1.25 * n.s), + v: .8 * n.v + } + , a = t.HSVToHex(r.h, r.s, r.v) + , h = t.HSVToHex(s.h, s.s, s.v); + i = { + background: e, + border: a, + highlight: { + background: h, + border: a + }, + hover: { + background: h, + border: a + } + } + } else + i = { + background: e, + border: e, + highlight: { + background: e, + border: e + }, + hover: { + background: e, + border: e + } + } + } else + i = {}, + i.background = e.background || void 0, + i.border = e.border || void 0, + t.isString(e.highlight) ? i.highlight = { + border: e.highlight, + background: e.highlight + } : (i.highlight = {}, + i.highlight.background = e.highlight && e.highlight.background || void 0, + i.highlight.border = e.highlight && e.highlight.border || void 0), + t.isString(e.hover) ? i.hover = { + border: e.hover, + background: e.hover + } : (i.hover = {}, + i.hover.background = e.hover && e.hover.background || void 0, + i.hover.border = e.hover && e.hover.border || void 0); + return i + } + , + t.RGBToHSV = function(e, t, i) { + e /= 255, + t /= 255, + i /= 255; + var o = Math.min(e, Math.min(t, i)) + , n = Math.max(e, Math.max(t, i)); + if (o == n) + return { + h: 0, + s: 0, + v: o + }; + var s = e == o ? t - i : i == o ? e - t : i - e + , r = e == o ? 3 : i == o ? 1 : 5 + , a = 60 * (r - s / (n - o)) / 360 + , h = (n - o) / n + , d = n; + return { + h: a, + s: h, + v: d + } + } + ; + var a = { + split: function(e) { + var t = {}; + return e.split(";").forEach(function(e) { + if ("" != e.trim()) { + var i = e.split(":") + , o = i[0].trim() + , n = i[1].trim(); + t[o] = n + } + }), + t + }, + join: function(e) { + return Object.keys(e).map(function(t) { + return t + ": " + e[t] + }).join("; ") + } + }; + t.addCssText = function(e, i) { + var o = a.split(e.style.cssText) + , n = a.split(i) + , s = t.extend(o, n); + e.style.cssText = a.join(s) + } + , + t.removeCssText = function(e, t) { + var i = a.split(e.style.cssText) + , o = a.split(t); + for (var n in o) + o.hasOwnProperty(n) && delete i[n]; + e.style.cssText = a.join(i) + } + , + t.HSVToRGB = function(e, t, i) { + var o, n, s, r = Math.floor(6 * e), a = 6 * e - r, h = i * (1 - t), d = i * (1 - a * t), l = i * (1 - (1 - a) * t); + switch (r % 6) { + case 0: + o = i, + n = l, + s = h; + break; + case 1: + o = d, + n = i, + s = h; + break; + case 2: + o = h, + n = i, + s = l; + break; + case 3: + o = h, + n = d, + s = i; + break; + case 4: + o = l, + n = h, + s = i; + break; + case 5: + o = i, + n = h, + s = d + } + return { + r: Math.floor(255 * o), + g: Math.floor(255 * n), + b: Math.floor(255 * s) + } + } + , + t.HSVToHex = function(e, i, o) { + var n = t.HSVToRGB(e, i, o); + return t.RGBToHex(n.r, n.g, n.b) + } + , + t.hexToHSV = function(e) { + var i = t.hexToRGB(e); + return t.RGBToHSV(i.r, i.g, i.b) + } + , + t.isValidHex = function(e) { + var t = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e); + return t + } + , + t.isValidRGB = function(e) { + e = e.replace(" ", ""); + var t = /rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(e); + return t + } + , + t.isValidRGBA = function(e) { + e = e.replace(" ", ""); + var t = /rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(e); + return t + } + , + t.selectiveBridgeObject = function(e, i) { + if ("object" == ("undefined" == typeof i ? "undefined" : o(i))) { + for (var n = Object.create(i), s = 0; s < e.length; s++) + i.hasOwnProperty(e[s]) && "object" == o(i[e[s]]) && (n[e[s]] = t.bridgeObject(i[e[s]])); + return n + } + return null + } + , + t.bridgeObject = function(e) { + if ("object" == ("undefined" == typeof e ? "undefined" : o(e))) { + var i = Object.create(e); + for (var n in e) + e.hasOwnProperty(n) && "object" == o(e[n]) && (i[n] = t.bridgeObject(e[n])); + return i + } + return null + } + , + t.insertSort = function(e, t) { + for (var i = 0; i < e.length; i++) { + for (var o = e[i], n = i; n > 0 && t(o, e[n - 1]) < 0; n--) + e[n] = e[n - 1]; + e[n] = o + } + return e + } + , + t.mergeOptions = function(e, t, i) { + var o = (arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3], + arguments.length <= 4 || void 0 === arguments[4] ? {} : arguments[4]); + if (null === t[i]) + e[i] = Object.create(o[i]); + else if (void 0 !== t[i]) + if ("boolean" == typeof t[i]) + e[i].enabled = t[i]; + else { + void 0 === t[i].enabled && (e[i].enabled = !0); + for (var n in t[i]) + t[i].hasOwnProperty(n) && (e[i][n] = t[i][n]) + } + } + , + t.binarySearchCustom = function(e, t, i, o) { + for (var n = 1e4, s = 0, r = 0, a = e.length - 1; a >= r && n > s; ) { + var h = Math.floor((r + a) / 2) + , d = e[h] + , l = void 0 === o ? d[i] : d[i][o] + , c = t(l); + if (0 == c) + return h; + -1 == c ? r = h + 1 : a = h - 1, + s++ + } + return -1 + } + , + t.binarySearchValue = function(e, t, i, o, n) { + for (var s, r, a, h, d = 1e4, l = 0, c = 0, u = e.length - 1, n = void 0 != n ? n : function(e, t) { + return e == t ? 0 : t > e ? -1 : 1 + } + ; u >= c && d > l; ) { + if (h = Math.floor(.5 * (u + c)), + s = e[Math.max(0, h - 1)][i], + r = e[h][i], + a = e[Math.min(e.length - 1, h + 1)][i], + 0 == n(r, t)) + return h; + if (n(s, t) < 0 && n(r, t) > 0) + return "before" == o ? Math.max(0, h - 1) : h; + if (n(r, t) < 0 && n(a, t) > 0) + return "before" == o ? h : Math.min(e.length - 1, h + 1); + n(r, t) < 0 ? c = h + 1 : u = h - 1, + l++ + } + return -1 + } + , + t.easingFunctions = { + linear: function(e) { + return e + }, + easeInQuad: function(e) { + return e * e + }, + easeOutQuad: function(e) { + return e * (2 - e) + }, + easeInOutQuad: function(e) { + return .5 > e ? 2 * e * e : -1 + (4 - 2 * e) * e + }, + easeInCubic: function(e) { + return e * e * e + }, + easeOutCubic: function(e) { + return --e * e * e + 1 + }, + easeInOutCubic: function(e) { + return .5 > e ? 4 * e * e * e : (e - 1) * (2 * e - 2) * (2 * e - 2) + 1 + }, + easeInQuart: function(e) { + return e * e * e * e + }, + easeOutQuart: function(e) { + return 1 - --e * e * e * e + }, + easeInOutQuart: function(e) { + return .5 > e ? 8 * e * e * e * e : 1 - 8 * --e * e * e * e + }, + easeInQuint: function(e) { + return e * e * e * e * e + }, + easeOutQuint: function(e) { + return 1 + --e * e * e * e * e + }, + easeInOutQuint: function(e) { + return .5 > e ? 16 * e * e * e * e * e : 1 + 16 * --e * e * e * e * e + } + } + } + , function(e, t, i) { + e.exports = "undefined" != typeof window && window.moment || i(3) + } + , function(e, t, i) { + (function(e) { + !function(t, i) { + e.exports = i() + }(this, function() { + function t() { + return ro.apply(null, arguments) + } + function i(e) { + ro = e + } + function o(e) { + return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e) + } + function n(e) { + return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e) + } + function s(e, t) { + var i, o = []; + for (i = 0; i < e.length; ++i) + o.push(t(e[i], i)); + return o + } + function r(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + } + function a(e, t) { + for (var i in t) + r(t, i) && (e[i] = t[i]); + return r(t, "toString") && (e.toString = t.toString), + r(t, "valueOf") && (e.valueOf = t.valueOf), + e + } + function h(e, t, i, o) { + return Ne(e, t, i, o, !0).utc() + } + function d() { + return { + empty: !1, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: !1, + invalidMonth: null, + invalidFormat: !1, + userInvalidated: !1, + iso: !1, + parsedDateParts: [], + meridiem: null + } + } + function l(e) { + return null == e._pf && (e._pf = d()), + e._pf + } + function c(e) { + if (null == e._isValid) { + var t = l(e) + , i = ao.call(t.parsedDateParts, function(e) { + return null != e + }); + e._isValid = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && i), + e._strict && (e._isValid = e._isValid && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour) + } + return e._isValid + } + function u(e) { + var t = h(NaN); + return null != e ? a(l(t), e) : l(t).userInvalidated = !0, + t + } + function f(e) { + return void 0 === e + } + function p(e, t) { + var i, o, n; + if (f(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), + f(t._i) || (e._i = t._i), + f(t._f) || (e._f = t._f), + f(t._l) || (e._l = t._l), + f(t._strict) || (e._strict = t._strict), + f(t._tzm) || (e._tzm = t._tzm), + f(t._isUTC) || (e._isUTC = t._isUTC), + f(t._offset) || (e._offset = t._offset), + f(t._pf) || (e._pf = l(t)), + f(t._locale) || (e._locale = t._locale), + ho.length > 0) + for (i in ho) + o = ho[i], + n = t[o], + f(n) || (e[o] = n); + return e + } + function v(e) { + p(this, e), + this._d = new Date(null != e._d ? e._d.getTime() : NaN), + lo === !1 && (lo = !0, + t.updateOffset(this), + lo = !1) + } + function y(e) { + return e instanceof v || null != e && null != e._isAMomentObject + } + function g(e) { + return 0 > e ? Math.ceil(e) : Math.floor(e) + } + function b(e) { + var t = +e + , i = 0; + return 0 !== t && isFinite(t) && (i = g(t)), + i + } + function m(e, t, i) { + var o, n = Math.min(e.length, t.length), s = Math.abs(e.length - t.length), r = 0; + for (o = 0; n > o; o++) + (i && e[o] !== t[o] || !i && b(e[o]) !== b(t[o])) && r++; + return r + s + } + function _(e) { + t.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + e) + } + function w(e, i) { + var o = !0; + return a(function() { + return null != t.deprecationHandler && t.deprecationHandler(null, e), + o && (_(e + "\nArguments: " + Array.prototype.slice.call(arguments).join(", ") + "\n" + (new Error).stack), + o = !1), + i.apply(this, arguments) + }, i) + } + function k(e, i) { + null != t.deprecationHandler && t.deprecationHandler(e, i), + co[e] || (_(i), + co[e] = !0) + } + function x(e) { + return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e) + } + function O(e) { + return "[object Object]" === Object.prototype.toString.call(e) + } + function E(e) { + var t, i; + for (i in e) + t = e[i], + x(t) ? this[i] = t : this["_" + i] = t; + this._config = e, + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source) + } + function M(e, t) { + var i, o = a({}, e); + for (i in t) + r(t, i) && (O(e[i]) && O(t[i]) ? (o[i] = {}, + a(o[i], e[i]), + a(o[i], t[i])) : null != t[i] ? o[i] = t[i] : delete o[i]); + return o + } + function D(e) { + null != e && this.set(e) + } + function S(e) { + return e ? e.toLowerCase().replace("_", "-") : e + } + function C(e) { + for (var t, i, o, n, s = 0; s < e.length; ) { + for (n = S(e[s]).split("-"), + t = n.length, + i = S(e[s + 1]), + i = i ? i.split("-") : null; t > 0; ) { + if (o = T(n.slice(0, t).join("-"))) + return o; + if (i && i.length >= t && m(n, i, !0) >= t - 1) + break; + t-- + } + s++ + } + return null + } + function T(t) { + var i = null; + if (!vo[t] && "undefined" != typeof e && e && e.exports) + try { + i = fo._abbr, + !function() { + var e = new Error('Cannot find module "./locale"'); + throw e.code = "MODULE_NOT_FOUND", + e + }(), + P(i) + } catch (o) {} + return vo[t] + } + function P(e, t) { + var i; + return e && (i = f(t) ? I(e) : B(e, t), + i && (fo = i)), + fo._abbr + } + function B(e, t) { + return null !== t ? (t.abbr = e, + null != vo[e] ? (k("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"), + t = M(vo[e]._config, t)) : null != t.parentLocale && (null != vo[t.parentLocale] ? t = M(vo[t.parentLocale]._config, t) : k("parentLocaleUndefined", "specified parentLocale is not defined yet")), + vo[e] = new D(t), + P(e), + vo[e]) : (delete vo[e], + null) + } + function F(e, t) { + if (null != t) { + var i; + null != vo[e] && (t = M(vo[e]._config, t)), + i = new D(t), + i.parentLocale = vo[e], + vo[e] = i, + P(e) + } else + null != vo[e] && (null != vo[e].parentLocale ? vo[e] = vo[e].parentLocale : null != vo[e] && delete vo[e]); + return vo[e] + } + function I(e) { + var t; + if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), + !e) + return fo; + if (!o(e)) { + if (t = T(e)) + return t; + e = [e] + } + return C(e) + } + function j() { + return uo(vo) + } + function N(e, t) { + var i = e.toLowerCase(); + yo[i] = yo[i + "s"] = yo[t] = e + } + function z(e) { + return "string" == typeof e ? yo[e] || yo[e.toLowerCase()] : void 0 + } + function R(e) { + var t, i, o = {}; + for (i in e) + r(e, i) && (t = z(i), + t && (o[t] = e[i])); + return o + } + function A(e, i) { + return function(o) { + return null != o ? (H(this, e, o), + t.updateOffset(this, i), + this) : L(this, e) + } + } + function L(e, t) { + return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN + } + function H(e, t, i) { + e.isValid() && e._d["set" + (e._isUTC ? "UTC" : "") + t](i) + } + function W(e, t) { + var i; + if ("object" == typeof e) + for (i in e) + this.set(i, e[i]); + else if (e = z(e), + x(this[e])) + return this[e](t); + return this + } + function Y(e, t, i) { + var o = "" + Math.abs(e) + , n = t - o.length + , s = e >= 0; + return (s ? i ? "+" : "" : "-") + Math.pow(10, Math.max(0, n)).toString().substr(1) + o + } + function U(e, t, i, o) { + var n = o; + "string" == typeof o && (n = function() { + return this[o]() + } + ), + e && (_o[e] = n), + t && (_o[t[0]] = function() { + return Y(n.apply(this, arguments), t[1], t[2]) + } + ), + i && (_o[i] = function() { + return this.localeData().ordinal(n.apply(this, arguments), e) + } + ) + } + function V(e) { + return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "") + } + function q(e) { + var t, i, o = e.match(go); + for (t = 0, + i = o.length; i > t; t++) + _o[o[t]] ? o[t] = _o[o[t]] : o[t] = V(o[t]); + return function(t) { + var n, s = ""; + for (n = 0; i > n; n++) + s += o[n]instanceof Function ? o[n].call(t, e) : o[n]; + return s + } + } + function G(e, t) { + return e.isValid() ? (t = X(t, e.localeData()), + mo[t] = mo[t] || q(t), + mo[t](e)) : e.localeData().invalidDate() + } + function X(e, t) { + function i(e) { + return t.longDateFormat(e) || e + } + var o = 5; + for (bo.lastIndex = 0; o >= 0 && bo.test(e); ) + e = e.replace(bo, i), + bo.lastIndex = 0, + o -= 1; + return e + } + function K(e, t, i) { + Ro[e] = x(t) ? t : function(e, o) { + return e && i ? i : t + } + } + function Z(e, t) { + return r(Ro, e) ? Ro[e](t._strict, t._locale) : new RegExp(Q(e)) + } + function Q(e) { + return J(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, i, o, n) { + return t || i || o || n + })) + } + function J(e) { + return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + } + function $(e, t) { + var i, o = t; + for ("string" == typeof e && (e = [e]), + "number" == typeof t && (o = function(e, i) { + i[t] = b(e) + } + ), + i = 0; i < e.length; i++) + Ao[e[i]] = o + } + function ee(e, t) { + $(e, function(e, i, o, n) { + o._w = o._w || {}, + t(e, o._w, o, n) + }) + } + function te(e, t, i) { + null != t && r(Ao, e) && Ao[e](t, i._a, i, e) + } + function ie(e, t) { + return new Date(Date.UTC(e, t + 1, 0)).getUTCDate() + } + function oe(e, t) { + return o(this._months) ? this._months[e.month()] : this._months[Ko.test(t) ? "format" : "standalone"][e.month()] + } + function ne(e, t) { + return o(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[Ko.test(t) ? "format" : "standalone"][e.month()] + } + function se(e, t, i) { + var o, n, s, r = e.toLocaleLowerCase(); + if (!this._monthsParse) + for (this._monthsParse = [], + this._longMonthsParse = [], + this._shortMonthsParse = [], + o = 0; 12 > o; ++o) + s = h([2e3, o]), + this._shortMonthsParse[o] = this.monthsShort(s, "").toLocaleLowerCase(), + this._longMonthsParse[o] = this.months(s, "").toLocaleLowerCase(); + return i ? "MMM" === t ? (n = po.call(this._shortMonthsParse, r), + -1 !== n ? n : null) : (n = po.call(this._longMonthsParse, r), + -1 !== n ? n : null) : "MMM" === t ? (n = po.call(this._shortMonthsParse, r), + -1 !== n ? n : (n = po.call(this._longMonthsParse, r), + -1 !== n ? n : null)) : (n = po.call(this._longMonthsParse, r), + -1 !== n ? n : (n = po.call(this._shortMonthsParse, r), + -1 !== n ? n : null)) + } + function re(e, t, i) { + var o, n, s; + if (this._monthsParseExact) + return se.call(this, e, t, i); + for (this._monthsParse || (this._monthsParse = [], + this._longMonthsParse = [], + this._shortMonthsParse = []), + o = 0; 12 > o; o++) { + if (n = h([2e3, o]), + i && !this._longMonthsParse[o] && (this._longMonthsParse[o] = new RegExp("^" + this.months(n, "").replace(".", "") + "$","i"), + this._shortMonthsParse[o] = new RegExp("^" + this.monthsShort(n, "").replace(".", "") + "$","i")), + i || this._monthsParse[o] || (s = "^" + this.months(n, "") + "|^" + this.monthsShort(n, ""), + this._monthsParse[o] = new RegExp(s.replace(".", ""),"i")), + i && "MMMM" === t && this._longMonthsParse[o].test(e)) + return o; + if (i && "MMM" === t && this._shortMonthsParse[o].test(e)) + return o; + if (!i && this._monthsParse[o].test(e)) + return o + } + } + function ae(e, t) { + var i; + if (!e.isValid()) + return e; + if ("string" == typeof t) + if (/^\d+$/.test(t)) + t = b(t); + else if (t = e.localeData().monthsParse(t), + "number" != typeof t) + return e; + return i = Math.min(e.date(), ie(e.year(), t)), + e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, i), + e + } + function he(e) { + return null != e ? (ae(this, e), + t.updateOffset(this, !0), + this) : L(this, "Month") + } + function de() { + return ie(this.year(), this.month()) + } + function le(e) { + return this._monthsParseExact ? (r(this, "_monthsRegex") || ue.call(this), + e ? this._monthsShortStrictRegex : this._monthsShortRegex) : this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex + } + function ce(e) { + return this._monthsParseExact ? (r(this, "_monthsRegex") || ue.call(this), + e ? this._monthsStrictRegex : this._monthsRegex) : this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex + } + function ue() { + function e(e, t) { + return t.length - e.length + } + var t, i, o = [], n = [], s = []; + for (t = 0; 12 > t; t++) + i = h([2e3, t]), + o.push(this.monthsShort(i, "")), + n.push(this.months(i, "")), + s.push(this.months(i, "")), + s.push(this.monthsShort(i, "")); + for (o.sort(e), + n.sort(e), + s.sort(e), + t = 0; 12 > t; t++) + o[t] = J(o[t]), + n[t] = J(n[t]), + s[t] = J(s[t]); + this._monthsRegex = new RegExp("^(" + s.join("|") + ")","i"), + this._monthsShortRegex = this._monthsRegex, + this._monthsStrictRegex = new RegExp("^(" + n.join("|") + ")","i"), + this._monthsShortStrictRegex = new RegExp("^(" + o.join("|") + ")","i") + } + function fe(e) { + var t, i = e._a; + return i && -2 === l(e).overflow && (t = i[Ho] < 0 || i[Ho] > 11 ? Ho : i[Wo] < 1 || i[Wo] > ie(i[Lo], i[Ho]) ? Wo : i[Yo] < 0 || i[Yo] > 24 || 24 === i[Yo] && (0 !== i[Uo] || 0 !== i[Vo] || 0 !== i[qo]) ? Yo : i[Uo] < 0 || i[Uo] > 59 ? Uo : i[Vo] < 0 || i[Vo] > 59 ? Vo : i[qo] < 0 || i[qo] > 999 ? qo : -1, + l(e)._overflowDayOfYear && (Lo > t || t > Wo) && (t = Wo), + l(e)._overflowWeeks && -1 === t && (t = Go), + l(e)._overflowWeekday && -1 === t && (t = Xo), + l(e).overflow = t), + e + } + function pe(e) { + var t, i, o, n, s, r, a = e._i, h = en.exec(a) || tn.exec(a); + if (h) { + for (l(e).iso = !0, + t = 0, + i = nn.length; i > t; t++) + if (nn[t][1].exec(h[1])) { + n = nn[t][0], + o = nn[t][2] !== !1; + break + } + if (null == n) + return void (e._isValid = !1); + if (h[3]) { + for (t = 0, + i = sn.length; i > t; t++) + if (sn[t][1].exec(h[3])) { + s = (h[2] || " ") + sn[t][0]; + break + } + if (null == s) + return void (e._isValid = !1) + } + if (!o && null != s) + return void (e._isValid = !1); + if (h[4]) { + if (!on.exec(h[4])) + return void (e._isValid = !1); + r = "Z" + } + e._f = n + (s || "") + (r || ""), + Ce(e) + } else + e._isValid = !1 + } + function ve(e) { + var i = rn.exec(e._i); + return null !== i ? void (e._d = new Date(+i[1])) : (pe(e), + void (e._isValid === !1 && (delete e._isValid, + t.createFromInputFallback(e)))) + } + function ye(e, t, i, o, n, s, r) { + var a = new Date(e,t,i,o,n,s,r); + return 100 > e && e >= 0 && isFinite(a.getFullYear()) && a.setFullYear(e), + a + } + function ge(e) { + var t = new Date(Date.UTC.apply(null, arguments)); + return 100 > e && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), + t + } + function be(e) { + return me(e) ? 366 : 365 + } + function me(e) { + return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0 + } + function _e() { + return me(this.year()) + } + function we(e, t, i) { + var o = 7 + t - i + , n = (7 + ge(e, 0, o).getUTCDay() - t) % 7; + return -n + o - 1 + } + function ke(e, t, i, o, n) { + var s, r, a = (7 + i - o) % 7, h = we(e, o, n), d = 1 + 7 * (t - 1) + a + h; + return 0 >= d ? (s = e - 1, + r = be(s) + d) : d > be(e) ? (s = e + 1, + r = d - be(e)) : (s = e, + r = d), + { + year: s, + dayOfYear: r + } + } + function xe(e, t, i) { + var o, n, s = we(e.year(), t, i), r = Math.floor((e.dayOfYear() - s - 1) / 7) + 1; + return 1 > r ? (n = e.year() - 1, + o = r + Oe(n, t, i)) : r > Oe(e.year(), t, i) ? (o = r - Oe(e.year(), t, i), + n = e.year() + 1) : (n = e.year(), + o = r), + { + week: o, + year: n + } + } + function Oe(e, t, i) { + var o = we(e, t, i) + , n = we(e + 1, t, i); + return (be(e) - o + n) / 7 + } + function Ee(e, t, i) { + return null != e ? e : null != t ? t : i + } + function Me(e) { + var i = new Date(t.now()); + return e._useUTC ? [i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate()] : [i.getFullYear(), i.getMonth(), i.getDate()] + } + function De(e) { + var t, i, o, n, s = []; + if (!e._d) { + for (o = Me(e), + e._w && null == e._a[Wo] && null == e._a[Ho] && Se(e), + e._dayOfYear && (n = Ee(e._a[Lo], o[Lo]), + e._dayOfYear > be(n) && (l(e)._overflowDayOfYear = !0), + i = ge(n, 0, e._dayOfYear), + e._a[Ho] = i.getUTCMonth(), + e._a[Wo] = i.getUTCDate()), + t = 0; 3 > t && null == e._a[t]; ++t) + e._a[t] = s[t] = o[t]; + for (; 7 > t; t++) + e._a[t] = s[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t]; + 24 === e._a[Yo] && 0 === e._a[Uo] && 0 === e._a[Vo] && 0 === e._a[qo] && (e._nextDay = !0, + e._a[Yo] = 0), + e._d = (e._useUTC ? ge : ye).apply(null, s), + null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), + e._nextDay && (e._a[Yo] = 24) + } + } + function Se(e) { + var t, i, o, n, s, r, a, h; + t = e._w, + null != t.GG || null != t.W || null != t.E ? (s = 1, + r = 4, + i = Ee(t.GG, e._a[Lo], xe(ze(), 1, 4).year), + o = Ee(t.W, 1), + n = Ee(t.E, 1), + (1 > n || n > 7) && (h = !0)) : (s = e._locale._week.dow, + r = e._locale._week.doy, + i = Ee(t.gg, e._a[Lo], xe(ze(), s, r).year), + o = Ee(t.w, 1), + null != t.d ? (n = t.d, + (0 > n || n > 6) && (h = !0)) : null != t.e ? (n = t.e + s, + (t.e < 0 || t.e > 6) && (h = !0)) : n = s), + 1 > o || o > Oe(i, s, r) ? l(e)._overflowWeeks = !0 : null != h ? l(e)._overflowWeekday = !0 : (a = ke(i, o, n, s, r), + e._a[Lo] = a.year, + e._dayOfYear = a.dayOfYear) + } + function Ce(e) { + if (e._f === t.ISO_8601) + return void pe(e); + e._a = [], + l(e).empty = !0; + var i, o, n, s, r, a = "" + e._i, h = a.length, d = 0; + for (n = X(e._f, e._locale).match(go) || [], + i = 0; i < n.length; i++) + s = n[i], + o = (a.match(Z(s, e)) || [])[0], + o && (r = a.substr(0, a.indexOf(o)), + r.length > 0 && l(e).unusedInput.push(r), + a = a.slice(a.indexOf(o) + o.length), + d += o.length), + _o[s] ? (o ? l(e).empty = !1 : l(e).unusedTokens.push(s), + te(s, o, e)) : e._strict && !o && l(e).unusedTokens.push(s); + l(e).charsLeftOver = h - d, + a.length > 0 && l(e).unusedInput.push(a), + l(e).bigHour === !0 && e._a[Yo] <= 12 && e._a[Yo] > 0 && (l(e).bigHour = void 0), + l(e).parsedDateParts = e._a.slice(0), + l(e).meridiem = e._meridiem, + e._a[Yo] = Te(e._locale, e._a[Yo], e._meridiem), + De(e), + fe(e) + } + function Te(e, t, i) { + var o; + return null == i ? t : null != e.meridiemHour ? e.meridiemHour(t, i) : null != e.isPM ? (o = e.isPM(i), + o && 12 > t && (t += 12), + o || 12 !== t || (t = 0), + t) : t + } + function Pe(e) { + var t, i, o, n, s; + if (0 === e._f.length) + return l(e).invalidFormat = !0, + void (e._d = new Date(NaN)); + for (n = 0; n < e._f.length; n++) + s = 0, + t = p({}, e), + null != e._useUTC && (t._useUTC = e._useUTC), + t._f = e._f[n], + Ce(t), + c(t) && (s += l(t).charsLeftOver, + s += 10 * l(t).unusedTokens.length, + l(t).score = s, + (null == o || o > s) && (o = s, + i = t)); + a(e, i || t) + } + function Be(e) { + if (!e._d) { + var t = R(e._i); + e._a = s([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) { + return e && parseInt(e, 10) + }), + De(e) + } + } + function Fe(e) { + var t = new v(fe(Ie(e))); + return t._nextDay && (t.add(1, "d"), + t._nextDay = void 0), + t + } + function Ie(e) { + var t = e._i + , i = e._f; + return e._locale = e._locale || I(e._l), + null === t || void 0 === i && "" === t ? u({ + nullInput: !0 + }) : ("string" == typeof t && (e._i = t = e._locale.preparse(t)), + y(t) ? new v(fe(t)) : (o(i) ? Pe(e) : i ? Ce(e) : n(t) ? e._d = t : je(e), + c(e) || (e._d = null), + e)) + } + function je(e) { + var i = e._i; + void 0 === i ? e._d = new Date(t.now()) : n(i) ? e._d = new Date(i.valueOf()) : "string" == typeof i ? ve(e) : o(i) ? (e._a = s(i.slice(0), function(e) { + return parseInt(e, 10) + }), + De(e)) : "object" == typeof i ? Be(e) : "number" == typeof i ? e._d = new Date(i) : t.createFromInputFallback(e) + } + function Ne(e, t, i, o, n) { + var s = {}; + return "boolean" == typeof i && (o = i, + i = void 0), + s._isAMomentObject = !0, + s._useUTC = s._isUTC = n, + s._l = i, + s._i = e, + s._f = t, + s._strict = o, + Fe(s) + } + function ze(e, t, i, o) { + return Ne(e, t, i, o, !1) + } + function Re(e, t) { + var i, n; + if (1 === t.length && o(t[0]) && (t = t[0]), + !t.length) + return ze(); + for (i = t[0], + n = 1; n < t.length; ++n) + t[n].isValid() && !t[n][e](i) || (i = t[n]); + return i + } + function Ae() { + var e = [].slice.call(arguments, 0); + return Re("isBefore", e) + } + function Le() { + var e = [].slice.call(arguments, 0); + return Re("isAfter", e) + } + function He(e) { + var t = R(e) + , i = t.year || 0 + , o = t.quarter || 0 + , n = t.month || 0 + , s = t.week || 0 + , r = t.day || 0 + , a = t.hour || 0 + , h = t.minute || 0 + , d = t.second || 0 + , l = t.millisecond || 0; + this._milliseconds = +l + 1e3 * d + 6e4 * h + 1e3 * a * 60 * 60, + this._days = +r + 7 * s, + this._months = +n + 3 * o + 12 * i, + this._data = {}, + this._locale = I(), + this._bubble() + } + function We(e) { + return e instanceof He + } + function Ye(e, t) { + U(e, 0, 0, function() { + var e = this.utcOffset() + , i = "+"; + return 0 > e && (e = -e, + i = "-"), + i + Y(~~(e / 60), 2) + t + Y(~~e % 60, 2) + }) + } + function Ue(e, t) { + var i = (t || "").match(e) || [] + , o = i[i.length - 1] || [] + , n = (o + "").match(cn) || ["-", 0, 0] + , s = +(60 * n[1]) + b(n[2]); + return "+" === n[0] ? s : -s + } + function Ve(e, i) { + var o, s; + return i._isUTC ? (o = i.clone(), + s = (y(e) || n(e) ? e.valueOf() : ze(e).valueOf()) - o.valueOf(), + o._d.setTime(o._d.valueOf() + s), + t.updateOffset(o, !1), + o) : ze(e).local() + } + function qe(e) { + return 15 * -Math.round(e._d.getTimezoneOffset() / 15) + } + function Ge(e, i) { + var o, n = this._offset || 0; + return this.isValid() ? null != e ? ("string" == typeof e ? e = Ue(jo, e) : Math.abs(e) < 16 && (e = 60 * e), + !this._isUTC && i && (o = qe(this)), + this._offset = e, + this._isUTC = !0, + null != o && this.add(o, "m"), + n !== e && (!i || this._changeInProgress ? lt(this, nt(e - n, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, + t.updateOffset(this, !0), + this._changeInProgress = null)), + this) : this._isUTC ? n : qe(this) : null != e ? this : NaN + } + function Xe(e, t) { + return null != e ? ("string" != typeof e && (e = -e), + this.utcOffset(e, t), + this) : -this.utcOffset() + } + function Ke(e) { + return this.utcOffset(0, e) + } + function Ze(e) { + return this._isUTC && (this.utcOffset(0, e), + this._isUTC = !1, + e && this.subtract(qe(this), "m")), + this + } + function Qe() { + return this._tzm ? this.utcOffset(this._tzm) : "string" == typeof this._i && this.utcOffset(Ue(Io, this._i)), + this + } + function Je(e) { + return this.isValid() ? (e = e ? ze(e).utcOffset() : 0, + (this.utcOffset() - e) % 60 === 0) : !1 + } + function $e() { + return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() + } + function et() { + if (!f(this._isDSTShifted)) + return this._isDSTShifted; + var e = {}; + if (p(e, this), + e = Ie(e), + e._a) { + var t = e._isUTC ? h(e._a) : ze(e._a); + this._isDSTShifted = this.isValid() && m(e._a, t.toArray()) > 0 + } else + this._isDSTShifted = !1; + return this._isDSTShifted + } + function tt() { + return this.isValid() ? !this._isUTC : !1 + } + function it() { + return this.isValid() ? this._isUTC : !1 + } + function ot() { + return this.isValid() ? this._isUTC && 0 === this._offset : !1 + } + function nt(e, t) { + var i, o, n, s = e, a = null; + return We(e) ? s = { + ms: e._milliseconds, + d: e._days, + M: e._months + } : "number" == typeof e ? (s = {}, + t ? s[t] = e : s.milliseconds = e) : (a = un.exec(e)) ? (i = "-" === a[1] ? -1 : 1, + s = { + y: 0, + d: b(a[Wo]) * i, + h: b(a[Yo]) * i, + m: b(a[Uo]) * i, + s: b(a[Vo]) * i, + ms: b(a[qo]) * i + }) : (a = fn.exec(e)) ? (i = "-" === a[1] ? -1 : 1, + s = { + y: st(a[2], i), + M: st(a[3], i), + w: st(a[4], i), + d: st(a[5], i), + h: st(a[6], i), + m: st(a[7], i), + s: st(a[8], i) + }) : null == s ? s = {} : "object" == typeof s && ("from"in s || "to"in s) && (n = at(ze(s.from), ze(s.to)), + s = {}, + s.ms = n.milliseconds, + s.M = n.months), + o = new He(s), + We(e) && r(e, "_locale") && (o._locale = e._locale), + o + } + function st(e, t) { + var i = e && parseFloat(e.replace(",", ".")); + return (isNaN(i) ? 0 : i) * t + } + function rt(e, t) { + var i = { + milliseconds: 0, + months: 0 + }; + return i.months = t.month() - e.month() + 12 * (t.year() - e.year()), + e.clone().add(i.months, "M").isAfter(t) && --i.months, + i.milliseconds = +t - +e.clone().add(i.months, "M"), + i + } + function at(e, t) { + var i; + return e.isValid() && t.isValid() ? (t = Ve(t, e), + e.isBefore(t) ? i = rt(e, t) : (i = rt(t, e), + i.milliseconds = -i.milliseconds, + i.months = -i.months), + i) : { + milliseconds: 0, + months: 0 + } + } + function ht(e) { + return 0 > e ? -1 * Math.round(-1 * e) : Math.round(e) + } + function dt(e, t) { + return function(i, o) { + var n, s; + return null === o || isNaN(+o) || (k(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period)."), + s = i, + i = o, + o = s), + i = "string" == typeof i ? +i : i, + n = nt(i, o), + lt(this, n, e), + this + } + } + function lt(e, i, o, n) { + var s = i._milliseconds + , r = ht(i._days) + , a = ht(i._months); + e.isValid() && (n = null == n ? !0 : n, + s && e._d.setTime(e._d.valueOf() + s * o), + r && H(e, "Date", L(e, "Date") + r * o), + a && ae(e, L(e, "Month") + a * o), + n && t.updateOffset(e, r || a)) + } + function ct(e, t) { + var i = e || ze() + , o = Ve(i, this).startOf("day") + , n = this.diff(o, "days", !0) + , s = -6 > n ? "sameElse" : -1 > n ? "lastWeek" : 0 > n ? "lastDay" : 1 > n ? "sameDay" : 2 > n ? "nextDay" : 7 > n ? "nextWeek" : "sameElse" + , r = t && (x(t[s]) ? t[s]() : t[s]); + return this.format(r || this.localeData().calendar(s, this, ze(i))) + } + function ut() { + return new v(this) + } + function ft(e, t) { + var i = y(e) ? e : ze(e); + return this.isValid() && i.isValid() ? (t = z(f(t) ? "millisecond" : t), + "millisecond" === t ? this.valueOf() > i.valueOf() : i.valueOf() < this.clone().startOf(t).valueOf()) : !1 + } + function pt(e, t) { + var i = y(e) ? e : ze(e); + return this.isValid() && i.isValid() ? (t = z(f(t) ? "millisecond" : t), + "millisecond" === t ? this.valueOf() < i.valueOf() : this.clone().endOf(t).valueOf() < i.valueOf()) : !1 + } + function vt(e, t, i, o) { + return o = o || "()", + ("(" === o[0] ? this.isAfter(e, i) : !this.isBefore(e, i)) && (")" === o[1] ? this.isBefore(t, i) : !this.isAfter(t, i)) + } + function yt(e, t) { + var i, o = y(e) ? e : ze(e); + return this.isValid() && o.isValid() ? (t = z(t || "millisecond"), + "millisecond" === t ? this.valueOf() === o.valueOf() : (i = o.valueOf(), + this.clone().startOf(t).valueOf() <= i && i <= this.clone().endOf(t).valueOf())) : !1 + } + function gt(e, t) { + return this.isSame(e, t) || this.isAfter(e, t) + } + function bt(e, t) { + return this.isSame(e, t) || this.isBefore(e, t) + } + function mt(e, t, i) { + var o, n, s, r; + return this.isValid() ? (o = Ve(e, this), + o.isValid() ? (n = 6e4 * (o.utcOffset() - this.utcOffset()), + t = z(t), + "year" === t || "month" === t || "quarter" === t ? (r = _t(this, o), + "quarter" === t ? r /= 3 : "year" === t && (r /= 12)) : (s = this - o, + r = "second" === t ? s / 1e3 : "minute" === t ? s / 6e4 : "hour" === t ? s / 36e5 : "day" === t ? (s - n) / 864e5 : "week" === t ? (s - n) / 6048e5 : s), + i ? r : g(r)) : NaN) : NaN + } + function _t(e, t) { + var i, o, n = 12 * (t.year() - e.year()) + (t.month() - e.month()), s = e.clone().add(n, "months"); + return 0 > t - s ? (i = e.clone().add(n - 1, "months"), + o = (t - s) / (s - i)) : (i = e.clone().add(n + 1, "months"), + o = (t - s) / (i - s)), + -(n + o) || 0 + } + function wt() { + return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") + } + function kt() { + var e = this.clone().utc(); + return 0 < e.year() && e.year() <= 9999 ? x(Date.prototype.toISOString) ? this.toDate().toISOString() : G(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : G(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") + } + function xt(e) { + e || (e = this.isUtc() ? t.defaultFormatUtc : t.defaultFormat); + var i = G(this, e); + return this.localeData().postformat(i) + } + function Ot(e, t) { + return this.isValid() && (y(e) && e.isValid() || ze(e).isValid()) ? nt({ + to: this, + from: e + }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() + } + function Et(e) { + return this.from(ze(), e) + } + function Mt(e, t) { + return this.isValid() && (y(e) && e.isValid() || ze(e).isValid()) ? nt({ + from: this, + to: e + }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() + } + function Dt(e) { + return this.to(ze(), e) + } + function St(e) { + var t; + return void 0 === e ? this._locale._abbr : (t = I(e), + null != t && (this._locale = t), + this) + } + function Ct() { + return this._locale + } + function Tt(e) { + switch (e = z(e)) { + case "year": + this.month(0); + case "quarter": + case "month": + this.date(1); + case "week": + case "isoWeek": + case "day": + case "date": + this.hours(0); + case "hour": + this.minutes(0); + case "minute": + this.seconds(0); + case "second": + this.milliseconds(0) + } + return "week" === e && this.weekday(0), + "isoWeek" === e && this.isoWeekday(1), + "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), + this + } + function Pt(e) { + return e = z(e), + void 0 === e || "millisecond" === e ? this : ("date" === e && (e = "day"), + this.startOf(e).add(1, "isoWeek" === e ? "week" : e).subtract(1, "ms")) + } + function Bt() { + return this._d.valueOf() - 6e4 * (this._offset || 0) + } + function Ft() { + return Math.floor(this.valueOf() / 1e3) + } + function It() { + return this._offset ? new Date(this.valueOf()) : this._d + } + function jt() { + var e = this; + return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()] + } + function Nt() { + var e = this; + return { + years: e.year(), + months: e.month(), + date: e.date(), + hours: e.hours(), + minutes: e.minutes(), + seconds: e.seconds(), + milliseconds: e.milliseconds() + } + } + function zt() { + return this.isValid() ? this.toISOString() : null + } + function Rt() { + return c(this) + } + function At() { + return a({}, l(this)) + } + function Lt() { + return l(this).overflow + } + function Ht() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + } + } + function Wt(e, t) { + U(0, [e, e.length], 0, t) + } + function Yt(e) { + return Gt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) + } + function Ut(e) { + return Gt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4) + } + function Vt() { + return Oe(this.year(), 1, 4) + } + function qt() { + var e = this.localeData()._week; + return Oe(this.year(), e.dow, e.doy) + } + function Gt(e, t, i, o, n) { + var s; + return null == e ? xe(this, o, n).year : (s = Oe(e, o, n), + t > s && (t = s), + Xt.call(this, e, t, i, o, n)) + } + function Xt(e, t, i, o, n) { + var s = ke(e, t, i, o, n) + , r = ge(s.year, 0, s.dayOfYear); + return this.year(r.getUTCFullYear()), + this.month(r.getUTCMonth()), + this.date(r.getUTCDate()), + this + } + function Kt(e) { + return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3) + } + function Zt(e) { + return xe(e, this._week.dow, this._week.doy).week + } + function Qt() { + return this._week.dow + } + function Jt() { + return this._week.doy + } + function $t(e) { + var t = this.localeData().week(this); + return null == e ? t : this.add(7 * (e - t), "d") + } + function ei(e) { + var t = xe(this, 1, 4).week; + return null == e ? t : this.add(7 * (e - t), "d") + } + function ti(e, t) { + return "string" != typeof e ? e : isNaN(e) ? (e = t.weekdaysParse(e), + "number" == typeof e ? e : null) : parseInt(e, 10) + } + function ii(e, t) { + return o(this._weekdays) ? this._weekdays[e.day()] : this._weekdays[this._weekdays.isFormat.test(t) ? "format" : "standalone"][e.day()] + } + function oi(e) { + return this._weekdaysShort[e.day()] + } + function ni(e) { + return this._weekdaysMin[e.day()] + } + function si(e, t, i) { + var o, n, s, r = e.toLocaleLowerCase(); + if (!this._weekdaysParse) + for (this._weekdaysParse = [], + this._shortWeekdaysParse = [], + this._minWeekdaysParse = [], + o = 0; 7 > o; ++o) + s = h([2e3, 1]).day(o), + this._minWeekdaysParse[o] = this.weekdaysMin(s, "").toLocaleLowerCase(), + this._shortWeekdaysParse[o] = this.weekdaysShort(s, "").toLocaleLowerCase(), + this._weekdaysParse[o] = this.weekdays(s, "").toLocaleLowerCase(); + return i ? "dddd" === t ? (n = po.call(this._weekdaysParse, r), + -1 !== n ? n : null) : "ddd" === t ? (n = po.call(this._shortWeekdaysParse, r), + -1 !== n ? n : null) : (n = po.call(this._minWeekdaysParse, r), + -1 !== n ? n : null) : "dddd" === t ? (n = po.call(this._weekdaysParse, r), + -1 !== n ? n : (n = po.call(this._shortWeekdaysParse, r), + -1 !== n ? n : (n = po.call(this._minWeekdaysParse, r), + -1 !== n ? n : null))) : "ddd" === t ? (n = po.call(this._shortWeekdaysParse, r), + -1 !== n ? n : (n = po.call(this._weekdaysParse, r), + -1 !== n ? n : (n = po.call(this._minWeekdaysParse, r), + -1 !== n ? n : null))) : (n = po.call(this._minWeekdaysParse, r), + -1 !== n ? n : (n = po.call(this._weekdaysParse, r), + -1 !== n ? n : (n = po.call(this._shortWeekdaysParse, r), + -1 !== n ? n : null))) + } + function ri(e, t, i) { + var o, n, s; + if (this._weekdaysParseExact) + return si.call(this, e, t, i); + for (this._weekdaysParse || (this._weekdaysParse = [], + this._minWeekdaysParse = [], + this._shortWeekdaysParse = [], + this._fullWeekdaysParse = []), + o = 0; 7 > o; o++) { + if (n = h([2e3, 1]).day(o), + i && !this._fullWeekdaysParse[o] && (this._fullWeekdaysParse[o] = new RegExp("^" + this.weekdays(n, "").replace(".", ".?") + "$","i"), + this._shortWeekdaysParse[o] = new RegExp("^" + this.weekdaysShort(n, "").replace(".", ".?") + "$","i"), + this._minWeekdaysParse[o] = new RegExp("^" + this.weekdaysMin(n, "").replace(".", ".?") + "$","i")), + this._weekdaysParse[o] || (s = "^" + this.weekdays(n, "") + "|^" + this.weekdaysShort(n, "") + "|^" + this.weekdaysMin(n, ""), + this._weekdaysParse[o] = new RegExp(s.replace(".", ""),"i")), + i && "dddd" === t && this._fullWeekdaysParse[o].test(e)) + return o; + if (i && "ddd" === t && this._shortWeekdaysParse[o].test(e)) + return o; + if (i && "dd" === t && this._minWeekdaysParse[o].test(e)) + return o; + if (!i && this._weekdaysParse[o].test(e)) + return o + } + } + function ai(e) { + if (!this.isValid()) + return null != e ? this : NaN; + var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + return null != e ? (e = ti(e, this.localeData()), + this.add(e - t, "d")) : t + } + function hi(e) { + if (!this.isValid()) + return null != e ? this : NaN; + var t = (this.day() + 7 - this.localeData()._week.dow) % 7; + return null == e ? t : this.add(e - t, "d") + } + function di(e) { + return this.isValid() ? null == e ? this.day() || 7 : this.day(this.day() % 7 ? e : e - 7) : null != e ? this : NaN + } + function li(e) { + return this._weekdaysParseExact ? (r(this, "_weekdaysRegex") || fi.call(this), + e ? this._weekdaysStrictRegex : this._weekdaysRegex) : this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex + } + function ci(e) { + return this._weekdaysParseExact ? (r(this, "_weekdaysRegex") || fi.call(this), + e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex + } + function ui(e) { + return this._weekdaysParseExact ? (r(this, "_weekdaysRegex") || fi.call(this), + e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex + } + function fi() { + function e(e, t) { + return t.length - e.length + } + var t, i, o, n, s, r = [], a = [], d = [], l = []; + for (t = 0; 7 > t; t++) + i = h([2e3, 1]).day(t), + o = this.weekdaysMin(i, ""), + n = this.weekdaysShort(i, ""), + s = this.weekdays(i, ""), + r.push(o), + a.push(n), + d.push(s), + l.push(o), + l.push(n), + l.push(s); + for (r.sort(e), + a.sort(e), + d.sort(e), + l.sort(e), + t = 0; 7 > t; t++) + a[t] = J(a[t]), + d[t] = J(d[t]), + l[t] = J(l[t]); + this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")","i"), + this._weekdaysShortRegex = this._weekdaysRegex, + this._weekdaysMinRegex = this._weekdaysRegex, + this._weekdaysStrictRegex = new RegExp("^(" + d.join("|") + ")","i"), + this._weekdaysShortStrictRegex = new RegExp("^(" + a.join("|") + ")","i"), + this._weekdaysMinStrictRegex = new RegExp("^(" + r.join("|") + ")","i") + } + function pi(e) { + var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; + return null == e ? t : this.add(e - t, "d") + } + function vi() { + return this.hours() % 12 || 12 + } + function yi() { + return this.hours() || 24 + } + function gi(e, t) { + U(e, 0, 0, function() { + return this.localeData().meridiem(this.hours(), this.minutes(), t) + }) + } + function bi(e, t) { + return t._meridiemParse + } + function mi(e) { + return "p" === (e + "").toLowerCase().charAt(0) + } + function _i(e, t, i) { + return e > 11 ? i ? "pm" : "PM" : i ? "am" : "AM" + } + function wi(e, t) { + t[qo] = b(1e3 * ("0." + e)) + } + function ki() { + return this._isUTC ? "UTC" : "" + } + function xi() { + return this._isUTC ? "Coordinated Universal Time" : "" + } + function Oi(e) { + return ze(1e3 * e) + } + function Ei() { + return ze.apply(null, arguments).parseZone() + } + function Mi(e, t, i) { + var o = this._calendar[e]; + return x(o) ? o.call(t, i) : o + } + function Di(e) { + var t = this._longDateFormat[e] + , i = this._longDateFormat[e.toUpperCase()]; + return t || !i ? t : (this._longDateFormat[e] = i.replace(/MMMM|MM|DD|dddd/g, function(e) { + return e.slice(1) + }), + this._longDateFormat[e]) + } + function Si() { + return this._invalidDate + } + function Ci(e) { + return this._ordinal.replace("%d", e) + } + function Ti(e) { + return e + } + function Pi(e, t, i, o) { + var n = this._relativeTime[i]; + return x(n) ? n(e, t, i, o) : n.replace(/%d/i, e) + } + function Bi(e, t) { + var i = this._relativeTime[e > 0 ? "future" : "past"]; + return x(i) ? i(t) : i.replace(/%s/i, t) + } + function Fi(e, t, i, o) { + var n = I() + , s = h().set(o, t); + return n[i](s, e) + } + function Ii(e, t, i) { + if ("number" == typeof e && (t = e, + e = void 0), + e = e || "", + null != t) + return Fi(e, t, i, "month"); + var o, n = []; + for (o = 0; 12 > o; o++) + n[o] = Fi(e, o, i, "month"); + return n + } + function ji(e, t, i, o) { + "boolean" == typeof e ? ("number" == typeof t && (i = t, + t = void 0), + t = t || "") : (t = e, + i = t, + e = !1, + "number" == typeof t && (i = t, + t = void 0), + t = t || ""); + var n = I() + , s = e ? n._week.dow : 0; + if (null != i) + return Fi(t, (i + s) % 7, o, "day"); + var r, a = []; + for (r = 0; 7 > r; r++) + a[r] = Fi(t, (r + s) % 7, o, "day"); + return a + } + function Ni(e, t) { + return Ii(e, t, "months") + } + function zi(e, t) { + return Ii(e, t, "monthsShort") + } + function Ri(e, t, i) { + return ji(e, t, i, "weekdays") + } + function Ai(e, t, i) { + return ji(e, t, i, "weekdaysShort") + } + function Li(e, t, i) { + return ji(e, t, i, "weekdaysMin") + } + function Hi() { + var e = this._data; + return this._milliseconds = Ln(this._milliseconds), + this._days = Ln(this._days), + this._months = Ln(this._months), + e.milliseconds = Ln(e.milliseconds), + e.seconds = Ln(e.seconds), + e.minutes = Ln(e.minutes), + e.hours = Ln(e.hours), + e.months = Ln(e.months), + e.years = Ln(e.years), + this + } + function Wi(e, t, i, o) { + var n = nt(t, i); + return e._milliseconds += o * n._milliseconds, + e._days += o * n._days, + e._months += o * n._months, + e._bubble() + } + function Yi(e, t) { + return Wi(this, e, t, 1) + } + function Ui(e, t) { + return Wi(this, e, t, -1) + } + function Vi(e) { + return 0 > e ? Math.floor(e) : Math.ceil(e) + } + function qi() { + var e, t, i, o, n, s = this._milliseconds, r = this._days, a = this._months, h = this._data; + return s >= 0 && r >= 0 && a >= 0 || 0 >= s && 0 >= r && 0 >= a || (s += 864e5 * Vi(Xi(a) + r), + r = 0, + a = 0), + h.milliseconds = s % 1e3, + e = g(s / 1e3), + h.seconds = e % 60, + t = g(e / 60), + h.minutes = t % 60, + i = g(t / 60), + h.hours = i % 24, + r += g(i / 24), + n = g(Gi(r)), + a += n, + r -= Vi(Xi(n)), + o = g(a / 12), + a %= 12, + h.days = r, + h.months = a, + h.years = o, + this + } + function Gi(e) { + return 4800 * e / 146097 + } + function Xi(e) { + return 146097 * e / 4800 + } + function Ki(e) { + var t, i, o = this._milliseconds; + if (e = z(e), + "month" === e || "year" === e) + return t = this._days + o / 864e5, + i = this._months + Gi(t), + "month" === e ? i : i / 12; + switch (t = this._days + Math.round(Xi(this._months)), + e) { + case "week": + return t / 7 + o / 6048e5; + case "day": + return t + o / 864e5; + case "hour": + return 24 * t + o / 36e5; + case "minute": + return 1440 * t + o / 6e4; + case "second": + return 86400 * t + o / 1e3; + case "millisecond": + return Math.floor(864e5 * t) + o; + default: + throw new Error("Unknown unit " + e) + } + } + function Zi() { + return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * b(this._months / 12) + } + function Qi(e) { + return function() { + return this.as(e) + } + } + function Ji(e) { + return e = z(e), + this[e + "s"]() + } + function $i(e) { + return function() { + return this._data[e] + } + } + function eo() { + return g(this.days() / 7) + } + function to(e, t, i, o, n) { + return n.relativeTime(t || 1, !!i, e, o) + } + function io(e, t, i) { + var o = nt(e).abs() + , n = is(o.as("s")) + , s = is(o.as("m")) + , r = is(o.as("h")) + , a = is(o.as("d")) + , h = is(o.as("M")) + , d = is(o.as("y")) + , l = n < os.s && ["s", n] || 1 >= s && ["m"] || s < os.m && ["mm", s] || 1 >= r && ["h"] || r < os.h && ["hh", r] || 1 >= a && ["d"] || a < os.d && ["dd", a] || 1 >= h && ["M"] || h < os.M && ["MM", h] || 1 >= d && ["y"] || ["yy", d]; + return l[2] = t, + l[3] = +e > 0, + l[4] = i, + to.apply(null, l) + } + function oo(e, t) { + return void 0 === os[e] ? !1 : void 0 === t ? os[e] : (os[e] = t, + !0) + } + function no(e) { + var t = this.localeData() + , i = io(this, !e, t); + return e && (i = t.pastFuture(+this, i)), + t.postformat(i) + } + function so() { + var e, t, i, o = ns(this._milliseconds) / 1e3, n = ns(this._days), s = ns(this._months); + e = g(o / 60), + t = g(e / 60), + o %= 60, + e %= 60, + i = g(s / 12), + s %= 12; + var r = i + , a = s + , h = n + , d = t + , l = e + , c = o + , u = this.asSeconds(); + return u ? (0 > u ? "-" : "") + "P" + (r ? r + "Y" : "") + (a ? a + "M" : "") + (h ? h + "D" : "") + (d || l || c ? "T" : "") + (d ? d + "H" : "") + (l ? l + "M" : "") + (c ? c + "S" : "") : "P0D" + } + var ro, ao; + ao = Array.prototype.some ? Array.prototype.some : function(e) { + for (var t = Object(this), i = t.length >>> 0, o = 0; i > o; o++) + if (o in t && e.call(this, t[o], o, t)) + return !0; + return !1 + } + ; + var ho = t.momentProperties = [] + , lo = !1 + , co = {}; + t.suppressDeprecationWarnings = !1, + t.deprecationHandler = null; + var uo; + uo = Object.keys ? Object.keys : function(e) { + var t, i = []; + for (t in e) + r(e, t) && i.push(t); + return i + } + ; + var fo, po, vo = {}, yo = {}, go = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, bo = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, mo = {}, _o = {}, wo = /\d/, ko = /\d\d/, xo = /\d{3}/, Oo = /\d{4}/, Eo = /[+-]?\d{6}/, Mo = /\d\d?/, Do = /\d\d\d\d?/, So = /\d\d\d\d\d\d?/, Co = /\d{1,3}/, To = /\d{1,4}/, Po = /[+-]?\d{1,6}/, Bo = /\d+/, Fo = /[+-]?\d+/, Io = /Z|[+-]\d\d:?\d\d/gi, jo = /Z|[+-]\d\d(?::?\d\d)?/gi, No = /[+-]?\d+(\.\d{1,3})?/, zo = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, Ro = {}, Ao = {}, Lo = 0, Ho = 1, Wo = 2, Yo = 3, Uo = 4, Vo = 5, qo = 6, Go = 7, Xo = 8; + po = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) { + var t; + for (t = 0; t < this.length; ++t) + if (this[t] === e) + return t; + return -1 + } + , + U("M", ["MM", 2], "Mo", function() { + return this.month() + 1 + }), + U("MMM", 0, 0, function(e) { + return this.localeData().monthsShort(this, e) + }), + U("MMMM", 0, 0, function(e) { + return this.localeData().months(this, e) + }), + N("month", "M"), + K("M", Mo), + K("MM", Mo, ko), + K("MMM", function(e, t) { + return t.monthsShortRegex(e) + }), + K("MMMM", function(e, t) { + return t.monthsRegex(e) + }), + $(["M", "MM"], function(e, t) { + t[Ho] = b(e) - 1 + }), + $(["MMM", "MMMM"], function(e, t, i, o) { + var n = i._locale.monthsParse(e, o, i._strict); + null != n ? t[Ho] = n : l(i).invalidMonth = e + }); + var Ko = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/ + , Zo = "January_February_March_April_May_June_July_August_September_October_November_December".split("_") + , Qo = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_") + , Jo = zo + , $o = zo + , en = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/ + , tn = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/ + , on = /Z|[+-]\d\d(?::?\d\d)?/ + , nn = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, !1], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, !1], ["YYYYDDD", /\d{7}/]] + , sn = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]] + , rn = /^\/?Date\((\-?\d+)/i; + t.createFromInputFallback = w("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(e) { + e._d = new Date(e._i + (e._useUTC ? " UTC" : "")) + }), + U("Y", 0, 0, function() { + var e = this.year(); + return 9999 >= e ? "" + e : "+" + e + }), + U(0, ["YY", 2], 0, function() { + return this.year() % 100 + }), + U(0, ["YYYY", 4], 0, "year"), + U(0, ["YYYYY", 5], 0, "year"), + U(0, ["YYYYYY", 6, !0], 0, "year"), + N("year", "y"), + K("Y", Fo), + K("YY", Mo, ko), + K("YYYY", To, Oo), + K("YYYYY", Po, Eo), + K("YYYYYY", Po, Eo), + $(["YYYYY", "YYYYYY"], Lo), + $("YYYY", function(e, i) { + i[Lo] = 2 === e.length ? t.parseTwoDigitYear(e) : b(e) + }), + $("YY", function(e, i) { + i[Lo] = t.parseTwoDigitYear(e) + }), + $("Y", function(e, t) { + t[Lo] = parseInt(e, 10) + }), + t.parseTwoDigitYear = function(e) { + return b(e) + (b(e) > 68 ? 1900 : 2e3) + } + ; + var an = A("FullYear", !0); + t.ISO_8601 = function() {} + ; + var hn = w("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", function() { + var e = ze.apply(null, arguments); + return this.isValid() && e.isValid() ? this > e ? this : e : u() + }) + , dn = w("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", function() { + var e = ze.apply(null, arguments); + return this.isValid() && e.isValid() ? e > this ? this : e : u() + }) + , ln = function() { + return Date.now ? Date.now() : +new Date + }; + Ye("Z", ":"), + Ye("ZZ", ""), + K("Z", jo), + K("ZZ", jo), + $(["Z", "ZZ"], function(e, t, i) { + i._useUTC = !0, + i._tzm = Ue(jo, e) + }); + var cn = /([\+\-]|\d\d)/gi; + t.updateOffset = function() {} + ; + var un = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/ + , fn = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + nt.fn = He.prototype; + var pn = dt(1, "add") + , vn = dt(-1, "subtract"); + t.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", + t.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; + var yn = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) { + return void 0 === e ? this.localeData() : this.locale(e) + }); + U(0, ["gg", 2], 0, function() { + return this.weekYear() % 100 + }), + U(0, ["GG", 2], 0, function() { + return this.isoWeekYear() % 100 + }), + Wt("gggg", "weekYear"), + Wt("ggggg", "weekYear"), + Wt("GGGG", "isoWeekYear"), + Wt("GGGGG", "isoWeekYear"), + N("weekYear", "gg"), + N("isoWeekYear", "GG"), + K("G", Fo), + K("g", Fo), + K("GG", Mo, ko), + K("gg", Mo, ko), + K("GGGG", To, Oo), + K("gggg", To, Oo), + K("GGGGG", Po, Eo), + K("ggggg", Po, Eo), + ee(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, i, o) { + t[o.substr(0, 2)] = b(e) + }), + ee(["gg", "GG"], function(e, i, o, n) { + i[n] = t.parseTwoDigitYear(e) + }), + U("Q", 0, "Qo", "quarter"), + N("quarter", "Q"), + K("Q", wo), + $("Q", function(e, t) { + t[Ho] = 3 * (b(e) - 1) + }), + U("w", ["ww", 2], "wo", "week"), + U("W", ["WW", 2], "Wo", "isoWeek"), + N("week", "w"), + N("isoWeek", "W"), + K("w", Mo), + K("ww", Mo, ko), + K("W", Mo), + K("WW", Mo, ko), + ee(["w", "ww", "W", "WW"], function(e, t, i, o) { + t[o.substr(0, 1)] = b(e) + }); + var gn = { + dow: 0, + doy: 6 + }; + U("D", ["DD", 2], "Do", "date"), + N("date", "D"), + K("D", Mo), + K("DD", Mo, ko), + K("Do", function(e, t) { + return e ? t._ordinalParse : t._ordinalParseLenient + }), + $(["D", "DD"], Wo), + $("Do", function(e, t) { + t[Wo] = b(e.match(Mo)[0], 10) + }); + var bn = A("Date", !0); + U("d", 0, "do", "day"), + U("dd", 0, 0, function(e) { + return this.localeData().weekdaysMin(this, e) + }), + U("ddd", 0, 0, function(e) { + return this.localeData().weekdaysShort(this, e) + }), + U("dddd", 0, 0, function(e) { + return this.localeData().weekdays(this, e) + }), + U("e", 0, 0, "weekday"), + U("E", 0, 0, "isoWeekday"), + N("day", "d"), + N("weekday", "e"), + N("isoWeekday", "E"), + K("d", Mo), + K("e", Mo), + K("E", Mo), + K("dd", function(e, t) { + return t.weekdaysMinRegex(e) + }), + K("ddd", function(e, t) { + return t.weekdaysShortRegex(e) + }), + K("dddd", function(e, t) { + return t.weekdaysRegex(e) + }), + ee(["dd", "ddd", "dddd"], function(e, t, i, o) { + var n = i._locale.weekdaysParse(e, o, i._strict); + null != n ? t.d = n : l(i).invalidWeekday = e + }), + ee(["d", "e", "E"], function(e, t, i, o) { + t[o] = b(e) + }); + var mn = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_") + , _n = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_") + , wn = "Su_Mo_Tu_We_Th_Fr_Sa".split("_") + , kn = zo + , xn = zo + , On = zo; + U("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), + N("dayOfYear", "DDD"), + K("DDD", Co), + K("DDDD", xo), + $(["DDD", "DDDD"], function(e, t, i) { + i._dayOfYear = b(e) + }), + U("H", ["HH", 2], 0, "hour"), + U("h", ["hh", 2], 0, vi), + U("k", ["kk", 2], 0, yi), + U("hmm", 0, 0, function() { + return "" + vi.apply(this) + Y(this.minutes(), 2) + }), + U("hmmss", 0, 0, function() { + return "" + vi.apply(this) + Y(this.minutes(), 2) + Y(this.seconds(), 2) + }), + U("Hmm", 0, 0, function() { + return "" + this.hours() + Y(this.minutes(), 2) + }), + U("Hmmss", 0, 0, function() { + return "" + this.hours() + Y(this.minutes(), 2) + Y(this.seconds(), 2) + }), + gi("a", !0), + gi("A", !1), + N("hour", "h"), + K("a", bi), + K("A", bi), + K("H", Mo), + K("h", Mo), + K("HH", Mo, ko), + K("hh", Mo, ko), + K("hmm", Do), + K("hmmss", So), + K("Hmm", Do), + K("Hmmss", So), + $(["H", "HH"], Yo), + $(["a", "A"], function(e, t, i) { + i._isPm = i._locale.isPM(e), + i._meridiem = e + }), + $(["h", "hh"], function(e, t, i) { + t[Yo] = b(e), + l(i).bigHour = !0 + }), + $("hmm", function(e, t, i) { + var o = e.length - 2; + t[Yo] = b(e.substr(0, o)), + t[Uo] = b(e.substr(o)), + l(i).bigHour = !0 + }), + $("hmmss", function(e, t, i) { + var o = e.length - 4 + , n = e.length - 2; + t[Yo] = b(e.substr(0, o)), + t[Uo] = b(e.substr(o, 2)), + t[Vo] = b(e.substr(n)), + l(i).bigHour = !0 + }), + $("Hmm", function(e, t, i) { + var o = e.length - 2; + t[Yo] = b(e.substr(0, o)), + t[Uo] = b(e.substr(o)) + }), + $("Hmmss", function(e, t, i) { + var o = e.length - 4 + , n = e.length - 2; + t[Yo] = b(e.substr(0, o)), + t[Uo] = b(e.substr(o, 2)), + t[Vo] = b(e.substr(n)) + }); + var En = /[ap]\.?m?\.?/i + , Mn = A("Hours", !0); + U("m", ["mm", 2], 0, "minute"), + N("minute", "m"), + K("m", Mo), + K("mm", Mo, ko), + $(["m", "mm"], Uo); + var Dn = A("Minutes", !1); + U("s", ["ss", 2], 0, "second"), + N("second", "s"), + K("s", Mo), + K("ss", Mo, ko), + $(["s", "ss"], Vo); + var Sn = A("Seconds", !1); + U("S", 0, 0, function() { + return ~~(this.millisecond() / 100) + }), + U(0, ["SS", 2], 0, function() { + return ~~(this.millisecond() / 10) + }), + U(0, ["SSS", 3], 0, "millisecond"), + U(0, ["SSSS", 4], 0, function() { + return 10 * this.millisecond() + }), + U(0, ["SSSSS", 5], 0, function() { + return 100 * this.millisecond() + }), + U(0, ["SSSSSS", 6], 0, function() { + return 1e3 * this.millisecond() + }), + U(0, ["SSSSSSS", 7], 0, function() { + return 1e4 * this.millisecond() + }), + U(0, ["SSSSSSSS", 8], 0, function() { + return 1e5 * this.millisecond() + }), + U(0, ["SSSSSSSSS", 9], 0, function() { + return 1e6 * this.millisecond() + }), + N("millisecond", "ms"), + K("S", Co, wo), + K("SS", Co, ko), + K("SSS", Co, xo); + var Cn; + for (Cn = "SSSS"; Cn.length <= 9; Cn += "S") + K(Cn, Bo); + for (Cn = "S"; Cn.length <= 9; Cn += "S") + $(Cn, wi); + var Tn = A("Milliseconds", !1); + U("z", 0, 0, "zoneAbbr"), + U("zz", 0, 0, "zoneName"); + var Pn = v.prototype; + Pn.add = pn, + Pn.calendar = ct, + Pn.clone = ut, + Pn.diff = mt, + Pn.endOf = Pt, + Pn.format = xt, + Pn.from = Ot, + Pn.fromNow = Et, + Pn.to = Mt, + Pn.toNow = Dt, + Pn.get = W, + Pn.invalidAt = Lt, + Pn.isAfter = ft, + Pn.isBefore = pt, + Pn.isBetween = vt, + Pn.isSame = yt, + Pn.isSameOrAfter = gt, + Pn.isSameOrBefore = bt, + Pn.isValid = Rt, + Pn.lang = yn, + Pn.locale = St, + Pn.localeData = Ct, + Pn.max = dn, + Pn.min = hn, + Pn.parsingFlags = At, + Pn.set = W, + Pn.startOf = Tt, + Pn.subtract = vn, + Pn.toArray = jt, + Pn.toObject = Nt, + Pn.toDate = It, + Pn.toISOString = kt, + Pn.toJSON = zt, + Pn.toString = wt, + Pn.unix = Ft, + Pn.valueOf = Bt, + Pn.creationData = Ht, + Pn.year = an, + Pn.isLeapYear = _e, + Pn.weekYear = Yt, + Pn.isoWeekYear = Ut, + Pn.quarter = Pn.quarters = Kt, + Pn.month = he, + Pn.daysInMonth = de, + Pn.week = Pn.weeks = $t, + Pn.isoWeek = Pn.isoWeeks = ei, + Pn.weeksInYear = qt, + Pn.isoWeeksInYear = Vt, + Pn.date = bn, + Pn.day = Pn.days = ai, + Pn.weekday = hi, + Pn.isoWeekday = di, + Pn.dayOfYear = pi, + Pn.hour = Pn.hours = Mn, + Pn.minute = Pn.minutes = Dn, + Pn.second = Pn.seconds = Sn, + Pn.millisecond = Pn.milliseconds = Tn, + Pn.utcOffset = Ge, + Pn.utc = Ke, + Pn.local = Ze, + Pn.parseZone = Qe, + Pn.hasAlignedHourOffset = Je, + Pn.isDST = $e, + Pn.isDSTShifted = et, + Pn.isLocal = tt, + Pn.isUtcOffset = it, + Pn.isUtc = ot, + Pn.isUTC = ot, + Pn.zoneAbbr = ki, + Pn.zoneName = xi, + Pn.dates = w("dates accessor is deprecated. Use date instead.", bn), + Pn.months = w("months accessor is deprecated. Use month instead", he), + Pn.years = w("years accessor is deprecated. Use year instead", an), + Pn.zone = w("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779", Xe); + var Bn = Pn + , Fn = { + sameDay: "[Today at] LT", + nextDay: "[Tomorrow at] LT", + nextWeek: "dddd [at] LT", + lastDay: "[Yesterday at] LT", + lastWeek: "[Last] dddd [at] LT", + sameElse: "L" + } + , In = { + LTS: "h:mm:ss A", + LT: "h:mm A", + L: "MM/DD/YYYY", + LL: "MMMM D, YYYY", + LLL: "MMMM D, YYYY h:mm A", + LLLL: "dddd, MMMM D, YYYY h:mm A" + } + , jn = "Invalid date" + , Nn = "%d" + , zn = /\d{1,2}/ + , Rn = { + 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" + } + , An = D.prototype; + An._calendar = Fn, + An.calendar = Mi, + An._longDateFormat = In, + An.longDateFormat = Di, + An._invalidDate = jn, + An.invalidDate = Si, + An._ordinal = Nn, + An.ordinal = Ci, + An._ordinalParse = zn, + An.preparse = Ti, + An.postformat = Ti, + An._relativeTime = Rn, + An.relativeTime = Pi, + An.pastFuture = Bi, + An.set = E, + An.months = oe, + An._months = Zo, + An.monthsShort = ne, + An._monthsShort = Qo, + An.monthsParse = re, + An._monthsRegex = $o, + An.monthsRegex = ce, + An._monthsShortRegex = Jo, + An.monthsShortRegex = le, + An.week = Zt, + An._week = gn, + An.firstDayOfYear = Jt, + An.firstDayOfWeek = Qt, + An.weekdays = ii, + An._weekdays = mn, + An.weekdaysMin = ni, + An._weekdaysMin = wn, + An.weekdaysShort = oi, + An._weekdaysShort = _n, + An.weekdaysParse = ri, + An._weekdaysRegex = kn, + An.weekdaysRegex = li, + An._weekdaysShortRegex = xn, + An.weekdaysShortRegex = ci, + An._weekdaysMinRegex = On, + An.weekdaysMinRegex = ui, + An.isPM = mi, + An._meridiemParse = En, + An.meridiem = _i, + P("en", { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function(e) { + var t = e % 10 + , i = 1 === b(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; + return e + i + } + }), + t.lang = w("moment.lang is deprecated. Use moment.locale instead.", P), + t.langData = w("moment.langData is deprecated. Use moment.localeData instead.", I); + var Ln = Math.abs + , Hn = Qi("ms") + , Wn = Qi("s") + , Yn = Qi("m") + , Un = Qi("h") + , Vn = Qi("d") + , qn = Qi("w") + , Gn = Qi("M") + , Xn = Qi("y") + , Kn = $i("milliseconds") + , Zn = $i("seconds") + , Qn = $i("minutes") + , Jn = $i("hours") + , $n = $i("days") + , es = $i("months") + , ts = $i("years") + , is = Math.round + , os = { + s: 45, + m: 45, + h: 22, + d: 26, + M: 11 + } + , ns = Math.abs + , ss = He.prototype; + ss.abs = Hi, + ss.add = Yi, + ss.subtract = Ui, + ss.as = Ki, + ss.asMilliseconds = Hn, + ss.asSeconds = Wn, + ss.asMinutes = Yn, + ss.asHours = Un, + ss.asDays = Vn, + ss.asWeeks = qn, + ss.asMonths = Gn, + ss.asYears = Xn, + ss.valueOf = Zi, + ss._bubble = qi, + ss.get = Ji, + ss.milliseconds = Kn, + ss.seconds = Zn, + ss.minutes = Qn, + ss.hours = Jn, + ss.days = $n, + ss.weeks = eo, + ss.months = es, + ss.years = ts, + ss.humanize = no, + ss.toISOString = so, + ss.toString = so, + ss.toJSON = so, + ss.locale = St, + ss.localeData = Ct, + ss.toIsoString = w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", so), + ss.lang = yn, + U("X", 0, 0, "unix"), + U("x", 0, 0, "valueOf"), + K("x", Fo), + K("X", No), + $("X", function(e, t, i) { + i._d = new Date(1e3 * parseFloat(e, 10)) + }), + $("x", function(e, t, i) { + i._d = new Date(b(e)) + }), + t.version = "2.13.0", + i(ze), + t.fn = Bn, + t.min = Ae, + t.max = Le, + t.now = ln, + t.utc = h, + t.unix = Oi, + t.months = Ni, + t.isDate = n, + t.locale = P, + t.invalid = u, + t.duration = nt, + t.isMoment = y, + t.weekdays = Ri, + t.parseZone = Ei, + t.localeData = I, + t.isDuration = We, + t.monthsShort = zi, + t.weekdaysMin = Li, + t.defineLocale = B, + t.updateLocale = F, + t.locales = j, + t.weekdaysShort = Ai, + t.normalizeUnits = z, + t.relativeTimeThreshold = oo, + t.prototype = Bn; + var rs = t; + return rs + }) + } + ).call(t, i(4)(e)) + } + , function(e, t) { + e.exports = function(e) { + return e.webpackPolyfill || (e.deprecate = function() {} + , + e.paths = [], + e.children = [], + e.webpackPolyfill = 1), + e + } + } + , function(e, t) { + function i(e) { + throw new Error("Cannot find module '" + e + "'.") + } + i.keys = function() { + return [] + } + , + i.resolve = i, + e.exports = i, + i.id = 5 + } + , function(e, t) { + (function(t) { + function i(e, t, i) { + var o = t && i || 0 + , n = 0; + for (t = t || [], + e.toLowerCase().replace(/[0-9a-f]{2}/g, function(e) { + 16 > n && (t[o + n++] = c[e]) + }); 16 > n; ) + t[o + n++] = 0; + return t + } + function o(e, t) { + var i = t || 0 + , o = l; + return o[e[i++]] + o[e[i++]] + o[e[i++]] + o[e[i++]] + "-" + o[e[i++]] + o[e[i++]] + "-" + o[e[i++]] + o[e[i++]] + "-" + o[e[i++]] + o[e[i++]] + "-" + o[e[i++]] + o[e[i++]] + o[e[i++]] + o[e[i++]] + o[e[i++]] + o[e[i++]] + } + function n(e, t, i) { + var n = t && i || 0 + , s = t || []; + e = e || {}; + var r = void 0 !== e.clockseq ? e.clockseq : v + , a = void 0 !== e.msecs ? e.msecs : (new Date).getTime() + , h = void 0 !== e.nsecs ? e.nsecs : g + 1 + , d = a - y + (h - g) / 1e4; + if (0 > d && void 0 === e.clockseq && (r = r + 1 & 16383), + (0 > d || a > y) && void 0 === e.nsecs && (h = 0), + h >= 1e4) + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + y = a, + g = h, + v = r, + a += 122192928e5; + var l = (1e4 * (268435455 & a) + h) % 4294967296; + s[n++] = l >>> 24 & 255, + s[n++] = l >>> 16 & 255, + s[n++] = l >>> 8 & 255, + s[n++] = 255 & l; + var c = a / 4294967296 * 1e4 & 268435455; + s[n++] = c >>> 8 & 255, + s[n++] = 255 & c, + s[n++] = c >>> 24 & 15 | 16, + s[n++] = c >>> 16 & 255, + s[n++] = r >>> 8 | 128, + s[n++] = 255 & r; + for (var u = e.node || p, f = 0; 6 > f; f++) + s[n + f] = u[f]; + return t ? t : o(s) + } + function s(e, t, i) { + var n = t && i || 0; + "string" == typeof e && (t = "binary" == e ? new Array(16) : null, + e = null), + e = e || {}; + var s = e.random || (e.rng || r)(); + if (s[6] = 15 & s[6] | 64, + s[8] = 63 & s[8] | 128, + t) + for (var a = 0; 16 > a; a++) + t[n + a] = s[a]; + return t || o(s) + } + var r, a = "undefined" != typeof window ? window : "undefined" != typeof t ? t : null; + if (a && a.crypto && crypto.getRandomValues) { + var h = new Uint8Array(16); + r = function() { + return crypto.getRandomValues(h), + h + } + } + if (!r) { + var d = new Array(16); + r = function() { + for (var e, t = 0; 16 > t; t++) + 0 === (3 & t) && (e = 4294967296 * Math.random()), + d[t] = e >>> ((3 & t) << 3) & 255; + return d + } + } + for (var l = [], c = {}, u = 0; 256 > u; u++) + l[u] = (u + 256).toString(16).substr(1), + c[l[u]] = u; + var f = r() + , p = [1 | f[0], f[1], f[2], f[3], f[4], f[5]] + , v = 16383 & (f[6] << 8 | f[7]) + , y = 0 + , g = 0 + , b = s; + b.v1 = n, + b.v4 = s, + b.parse = i, + b.unparse = o, + e.exports = b + } + ).call(t, function() { + return this + }()) + } + , function(e, t) { + t.prepareElements = function(e) { + for (var t in e) + e.hasOwnProperty(t) && (e[t].redundant = e[t].used, + e[t].used = []) + } + , + t.cleanupElements = function(e) { + for (var t in e) + if (e.hasOwnProperty(t) && e[t].redundant) { + for (var i = 0; i < e[t].redundant.length; i++) + e[t].redundant[i].parentNode.removeChild(e[t].redundant[i]); + e[t].redundant = [] + } + } + , + t.resetElements = function(e) { + t.prepareElements(e), + t.cleanupElements(e), + t.prepareElements(e) + } + , + t.getSVGElement = function(e, t, i) { + var o; + return t.hasOwnProperty(e) ? t[e].redundant.length > 0 ? (o = t[e].redundant[0], + t[e].redundant.shift()) : (o = document.createElementNS("http://www.w3.org/2000/svg", e), + i.appendChild(o)) : (o = document.createElementNS("http://www.w3.org/2000/svg", e), + t[e] = { + used: [], + redundant: [] + }, + i.appendChild(o)), + t[e].used.push(o), + o + } + , + t.getDOMElement = function(e, t, i, o) { + var n; + return t.hasOwnProperty(e) ? t[e].redundant.length > 0 ? (n = t[e].redundant[0], + t[e].redundant.shift()) : (n = document.createElement(e), + void 0 !== o ? i.insertBefore(n, o) : i.appendChild(n)) : (n = document.createElement(e), + t[e] = { + used: [], + redundant: [] + }, + void 0 !== o ? i.insertBefore(n, o) : i.appendChild(n)), + t[e].used.push(n), + n + } + , + t.drawPoint = function(e, i, o, n, s, r) { + var a; + if ("circle" == o.style ? (a = t.getSVGElement("circle", n, s), + a.setAttributeNS(null, "cx", e), + a.setAttributeNS(null, "cy", i), + a.setAttributeNS(null, "r", .5 * o.size)) : (a = t.getSVGElement("rect", n, s), + a.setAttributeNS(null, "x", e - .5 * o.size), + a.setAttributeNS(null, "y", i - .5 * o.size), + a.setAttributeNS(null, "width", o.size), + a.setAttributeNS(null, "height", o.size)), + void 0 !== o.styles && a.setAttributeNS(null, "style", o.styles), + a.setAttributeNS(null, "class", o.className + " vis-point"), + r) { + var h = t.getSVGElement("text", n, s); + r.xOffset && (e += r.xOffset), + r.yOffset && (i += r.yOffset), + r.content && (h.textContent = r.content), + r.className && h.setAttributeNS(null, "class", r.className + " vis-label"), + h.setAttributeNS(null, "x", e), + h.setAttributeNS(null, "y", i) + } + return a + } + , + t.drawBar = function(e, i, o, n, s, r, a, h) { + if (0 != n) { + 0 > n && (n *= -1, + i -= n); + var d = t.getSVGElement("rect", r, a); + d.setAttributeNS(null, "x", e - .5 * o), + d.setAttributeNS(null, "y", i), + d.setAttributeNS(null, "width", o), + d.setAttributeNS(null, "height", n), + d.setAttributeNS(null, "class", s), + h && d.setAttributeNS(null, "style", h) + } + } + } + , function(e, t, i) { + function o(e, t) { + if (e && !Array.isArray(e) && (t = e, + e = null), + this._options = t || {}, + this._data = {}, + this.length = 0, + this._fieldId = this._options.fieldId || "id", + this._type = {}, + this._options.type) + for (var i = Object.keys(this._options.type), o = 0, n = i.length; n > o; o++) { + var s = i[o] + , r = this._options.type[s]; + "Date" == r || "ISODate" == r || "ASPDate" == r ? this._type[s] = "Date" : this._type[s] = r + } + if (this._options.convert) + throw new Error('Option "convert" is deprecated. Use "type" instead.'); + this._subscribers = {}, + e && this.add(e), + this.setOptions(t) + } + var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , s = i(1) + , r = i(9); + o.prototype.setOptions = function(e) { + e && void 0 !== e.queue && (e.queue === !1 ? this._queue && (this._queue.destroy(), + delete this._queue) : (this._queue || (this._queue = r.extend(this, { + replace: ["add", "update", "remove"] + })), + "object" === n(e.queue) && this._queue.setOptions(e.queue))) + } + , + o.prototype.on = function(e, t) { + var i = this._subscribers[e]; + i || (i = [], + this._subscribers[e] = i), + i.push({ + callback: t + }) + } + , + o.prototype.subscribe = function() { + throw new Error("DataSet.subscribe is deprecated. Use DataSet.on instead.") + } + , + o.prototype.off = function(e, t) { + var i = this._subscribers[e]; + i && (this._subscribers[e] = i.filter(function(e) { + return e.callback != t + })) + } + , + o.prototype.unsubscribe = function() { + throw new Error("DataSet.unsubscribe is deprecated. Use DataSet.off instead.") + } + , + o.prototype._trigger = function(e, t, i) { + if ("*" == e) + throw new Error("Cannot trigger event *"); + var o = []; + e in this._subscribers && (o = o.concat(this._subscribers[e])), + "*"in this._subscribers && (o = o.concat(this._subscribers["*"])); + for (var n = 0, s = o.length; s > n; n++) { + var r = o[n]; + r.callback && r.callback(e, t, i || null) + } + } + , + o.prototype.add = function(e, t) { + var i, o = [], n = this; + if (Array.isArray(e)) + for (var s = 0, r = e.length; r > s; s++) + i = n._addItem(e[s]), + o.push(i); + else { + if (!(e instanceof Object)) + throw new Error("Unknown dataType"); + i = n._addItem(e), + o.push(i) + } + return o.length && this._trigger("add", { + items: o + }, t), + o + } + , + o.prototype.update = function(e, t) { + var i = [] + , o = [] + , n = [] + , r = [] + , a = this + , h = a._fieldId + , d = function(e) { + var t = e[h]; + if (a._data[t]) { + var d = s.extend({}, a._data[t]); + t = a._updateItem(e), + o.push(t), + r.push(e), + n.push(d) + } else + t = a._addItem(e), + i.push(t) + }; + if (Array.isArray(e)) + for (var l = 0, c = e.length; c > l; l++) + e[l]instanceof Object ? d(e[l]) : console.warn("Ignoring input item, which is not an object at index " + l); + else { + if (!(e instanceof Object)) + throw new Error("Unknown dataType"); + d(e) + } + if (i.length && this._trigger("add", { + items: i + }, t), + o.length) { + var u = { + items: o, + oldData: n, + data: r + }; + this._trigger("update", u, t) + } + return i.concat(o) + } + , + o.prototype.get = function(e) { + var t, i, o, n = this, r = s.getType(arguments[0]); + "String" == r || "Number" == r ? (t = arguments[0], + o = arguments[1]) : "Array" == r ? (i = arguments[0], + o = arguments[1]) : o = arguments[0]; + var a; + if (o && o.returnType) { + var h = ["Array", "Object"]; + a = -1 == h.indexOf(o.returnType) ? "Array" : o.returnType + } else + a = "Array"; + var d, l, c, u, f, p = o && o.type || this._options.type, v = o && o.filter, y = []; + if (void 0 != t) + d = n._getItem(t, p), + d && v && !v(d) && (d = null); + else if (void 0 != i) + for (u = 0, + f = i.length; f > u; u++) + d = n._getItem(i[u], p), + v && !v(d) || y.push(d); + else + for (l = Object.keys(this._data), + u = 0, + f = l.length; f > u; u++) + c = l[u], + d = n._getItem(c, p), + v && !v(d) || y.push(d); + if (o && o.order && void 0 == t && this._sort(y, o.order), + o && o.fields) { + var g = o.fields; + if (void 0 != t) + d = this._filterFields(d, g); + else + for (u = 0, + f = y.length; f > u; u++) + y[u] = this._filterFields(y[u], g) + } + if ("Object" == a) { + var b, m = {}; + for (u = 0, + f = y.length; f > u; u++) + b = y[u], + m[b.id] = b; + return m + } + return void 0 != t ? d : y + } + , + o.prototype.getIds = function(e) { + var t, i, o, n, s, r = this._data, a = e && e.filter, h = e && e.order, d = e && e.type || this._options.type, l = Object.keys(r), c = []; + if (a) + if (h) { + for (s = [], + t = 0, + i = l.length; i > t; t++) + o = l[t], + n = this._getItem(o, d), + a(n) && s.push(n); + for (this._sort(s, h), + t = 0, + i = s.length; i > t; t++) + c.push(s[t][this._fieldId]) + } else + for (t = 0, + i = l.length; i > t; t++) + o = l[t], + n = this._getItem(o, d), + a(n) && c.push(n[this._fieldId]); + else if (h) { + for (s = [], + t = 0, + i = l.length; i > t; t++) + o = l[t], + s.push(r[o]); + for (this._sort(s, h), + t = 0, + i = s.length; i > t; t++) + c.push(s[t][this._fieldId]) + } else + for (t = 0, + i = l.length; i > t; t++) + o = l[t], + n = r[o], + c.push(n[this._fieldId]); + return c + } + , + o.prototype.getDataSet = function() { + return this + } + , + o.prototype.forEach = function(e, t) { + var i, o, n, s, r = t && t.filter, a = t && t.type || this._options.type, h = this._data, d = Object.keys(h); + if (t && t.order) { + var l = this.get(t); + for (i = 0, + o = l.length; o > i; i++) + n = l[i], + s = n[this._fieldId], + e(n, s) + } else + for (i = 0, + o = d.length; o > i; i++) + s = d[i], + n = this._getItem(s, a), + r && !r(n) || e(n, s) + } + , + o.prototype.map = function(e, t) { + var i, o, n, s, r = t && t.filter, a = t && t.type || this._options.type, h = [], d = this._data, l = Object.keys(d); + for (i = 0, + o = l.length; o > i; i++) + n = l[i], + s = this._getItem(n, a), + r && !r(s) || h.push(e(s, n)); + return t && t.order && this._sort(h, t.order), + h + } + , + o.prototype._filterFields = function(e, t) { + if (!e) + return e; + var i, o, n = {}, s = Object.keys(e), r = s.length; + if (Array.isArray(t)) + for (i = 0; r > i; i++) + o = s[i], + -1 != t.indexOf(o) && (n[o] = e[o]); + else + for (i = 0; r > i; i++) + o = s[i], + t.hasOwnProperty(o) && (n[t[o]] = e[o]); + return n + } + , + o.prototype._sort = function(e, t) { + if (s.isString(t)) { + var i = t; + e.sort(function(e, t) { + var o = e[i] + , n = t[i]; + return o > n ? 1 : n > o ? -1 : 0 + }) + } else { + if ("function" != typeof t) + throw new TypeError("Order must be a function or a string"); + e.sort(t) + } + } + , + o.prototype.remove = function(e, t) { + var i, o, n, s = []; + if (Array.isArray(e)) + for (i = 0, + o = e.length; o > i; i++) + n = this._remove(e[i]), + null != n && s.push(n); + else + n = this._remove(e), + null != n && s.push(n); + return s.length && this._trigger("remove", { + items: s + }, t), + s + } + , + o.prototype._remove = function(e) { + if (s.isNumber(e) || s.isString(e)) { + if (this._data[e]) + return delete this._data[e], + this.length--, + e + } else if (e instanceof Object) { + var t = e[this._fieldId]; + if (void 0 !== t && this._data[t]) + return delete this._data[t], + this.length--, + t + } + return null + } + , + o.prototype.clear = function(e) { + var t = Object.keys(this._data); + return this._data = {}, + this.length = 0, + this._trigger("remove", { + items: t + }, e), + t + } + , + o.prototype.max = function(e) { + var t, i, o = this._data, n = Object.keys(o), s = null, r = null; + for (t = 0, + i = n.length; i > t; t++) { + var a = n[t] + , h = o[a] + , d = h[e]; + null != d && (!s || d > r) && (s = h, + r = d) + } + return s + } + , + o.prototype.min = function(e) { + var t, i, o = this._data, n = Object.keys(o), s = null, r = null; + for (t = 0, + i = n.length; i > t; t++) { + var a = n[t] + , h = o[a] + , d = h[e]; + null != d && (!s || r > d) && (s = h, + r = d) + } + return s + } + , + o.prototype.distinct = function(e) { + var t, i, o, n = this._data, r = Object.keys(n), a = [], h = this._options.type && this._options.type[e] || null, d = 0; + for (t = 0, + o = r.length; o > t; t++) { + var l = r[t] + , c = n[l] + , u = c[e] + , f = !1; + for (i = 0; d > i; i++) + if (a[i] == u) { + f = !0; + break + } + f || void 0 === u || (a[d] = u, + d++) + } + if (h) + for (t = 0, + o = a.length; o > t; t++) + a[t] = s.convert(a[t], h); + return a + } + , + o.prototype._addItem = function(e) { + var t = e[this._fieldId]; + if (void 0 != t) { + if (this._data[t]) + throw new Error("Cannot add item: item with id " + t + " already exists") + } else + t = s.randomUUID(), + e[this._fieldId] = t; + var i, o, n = {}, r = Object.keys(e); + for (i = 0, + o = r.length; o > i; i++) { + var a = r[i] + , h = this._type[a]; + n[a] = s.convert(e[a], h) + } + return this._data[t] = n, + this.length++, + t + } + , + o.prototype._getItem = function(e, t) { + var i, o, n, r, a = this._data[e]; + if (!a) + return null; + var h = {} + , d = Object.keys(a); + if (t) + for (n = 0, + r = d.length; r > n; n++) + i = d[n], + o = a[i], + h[i] = s.convert(o, t[i]); + else + for (n = 0, + r = d.length; r > n; n++) + i = d[n], + o = a[i], + h[i] = o; + return h + } + , + o.prototype._updateItem = function(e) { + var t = e[this._fieldId]; + if (void 0 == t) + throw new Error("Cannot update item: item has no id (item: " + JSON.stringify(e) + ")"); + var i = this._data[t]; + if (!i) + throw new Error("Cannot update item: no item with id " + t + " found"); + for (var o = Object.keys(e), n = 0, r = o.length; r > n; n++) { + var a = o[n] + , h = this._type[a]; + i[a] = s.convert(e[a], h) + } + return t + } + , + e.exports = o + } + , function(e, t) { + function i(e) { + this.delay = null, + this.max = 1 / 0, + this._queue = [], + this._timeout = null, + this._extended = null, + this.setOptions(e) + } + i.prototype.setOptions = function(e) { + e && "undefined" != typeof e.delay && (this.delay = e.delay), + e && "undefined" != typeof e.max && (this.max = e.max), + this._flushIfNeeded() + } + , + i.extend = function(e, t) { + var o = new i(t); + if (void 0 !== e.flush) + throw new Error("Target object already has a property flush"); + e.flush = function() { + o.flush() + } + ; + var n = [{ + name: "flush", + original: void 0 + }]; + if (t && t.replace) + for (var s = 0; s < t.replace.length; s++) { + var r = t.replace[s]; + n.push({ + name: r, + original: e[r] + }), + o.replace(e, r) + } + return o._extended = { + object: e, + methods: n + }, + o + } + , + i.prototype.destroy = function() { + if (this.flush(), + this._extended) { + for (var e = this._extended.object, t = this._extended.methods, i = 0; i < t.length; i++) { + var o = t[i]; + o.original ? e[o.name] = o.original : delete e[o.name] + } + this._extended = null + } + } + , + i.prototype.replace = function(e, t) { + var i = this + , o = e[t]; + if (!o) + throw new Error("Method " + t + " undefined"); + e[t] = function() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + i.queue({ + args: e, + fn: o, + context: this + }) + } + } + , + i.prototype.queue = function(e) { + "function" == typeof e ? this._queue.push({ + fn: e + }) : this._queue.push(e), + this._flushIfNeeded() + } + , + i.prototype._flushIfNeeded = function() { + if (this._queue.length > this.max && this.flush(), + clearTimeout(this._timeout), + this.queue.length > 0 && "number" == typeof this.delay) { + var e = this; + this._timeout = setTimeout(function() { + e.flush() + }, this.delay) + } + } + , + i.prototype.flush = function() { + for (; this._queue.length > 0; ) { + var e = this._queue.shift(); + e.fn.apply(e.context || e.fn, e.args || []) + } + } + , + e.exports = i + } + , function(e, t, i) { + function o(e, t) { + this._data = null, + this._ids = {}, + this.length = 0, + this._options = t || {}, + this._fieldId = "id", + this._subscribers = {}; + var i = this; + this.listener = function() { + i._onEvent.apply(i, arguments) + } + , + this.setData(e) + } + var n = i(1) + , s = i(8); + o.prototype.setData = function(e) { + var t, i, o, n; + if (this._data && (this._data.off && this._data.off("*", this.listener), + t = Object.keys(this._ids), + this._ids = {}, + this.length = 0, + this._trigger("remove", { + items: t + })), + this._data = e, + this._data) { + for (this._fieldId = this._options.fieldId || this._data && this._data.options && this._data.options.fieldId || "id", + t = this._data.getIds({ + filter: this._options && this._options.filter + }), + o = 0, + n = t.length; n > o; o++) + i = t[o], + this._ids[i] = !0; + this.length = t.length, + this._trigger("add", { + items: t + }), + this._data.on && this._data.on("*", this.listener) + } + } + , + o.prototype.refresh = function() { + var e, t, i, o = this._data.getIds({ + filter: this._options && this._options.filter + }), n = Object.keys(this._ids), s = {}, r = [], a = []; + for (t = 0, + i = o.length; i > t; t++) + e = o[t], + s[e] = !0, + this._ids[e] || (r.push(e), + this._ids[e] = !0); + for (t = 0, + i = n.length; i > t; t++) + e = n[t], + s[e] || (a.push(e), + delete this._ids[e]); + this.length += r.length - a.length, + r.length && this._trigger("add", { + items: r + }), + a.length && this._trigger("remove", { + items: a + }) + } + , + o.prototype.get = function(e) { + var t, i, o, s = this, r = n.getType(arguments[0]); + "String" == r || "Number" == r || "Array" == r ? (t = arguments[0], + i = arguments[1], + o = arguments[2]) : (i = arguments[0], + o = arguments[1]); + var a = n.extend({}, this._options, i); + this._options.filter && i && i.filter && (a.filter = function(e) { + return s._options.filter(e) && i.filter(e) + } + ); + var h = []; + return void 0 != t && h.push(t), + h.push(a), + h.push(o), + this._data && this._data.get.apply(this._data, h) + } + , + o.prototype.getIds = function(e) { + var t; + if (this._data) { + var i, o = this._options.filter; + i = e && e.filter ? o ? function(t) { + return o(t) && e.filter(t) + } + : e.filter : o, + t = this._data.getIds({ + filter: i, + order: e && e.order + }) + } else + t = []; + return t + } + , + o.prototype.map = function(e, t) { + var i = []; + if (this._data) { + var o, n = this._options.filter; + o = t && t.filter ? n ? function(e) { + return n(e) && t.filter(e) + } + : t.filter : n, + i = this._data.map(e, { + filter: o, + order: t && t.order + }) + } else + i = []; + return i + } + , + o.prototype.getDataSet = function() { + for (var e = this; e instanceof o; ) + e = e._data; + return e || null + } + , + o.prototype._onEvent = function(e, t, i) { + var o, n, s, r, a = t && t.items, h = this._data, d = [], l = [], c = [], u = []; + if (a && h) { + switch (e) { + case "add": + for (o = 0, + n = a.length; n > o; o++) + s = a[o], + r = this.get(s), + r && (this._ids[s] = !0, + l.push(s)); + break; + case "update": + for (o = 0, + n = a.length; n > o; o++) + s = a[o], + r = this.get(s), + r ? this._ids[s] ? (c.push(s), + d.push(t.data[o])) : (this._ids[s] = !0, + l.push(s)) : this._ids[s] && (delete this._ids[s], + u.push(s)); + break; + case "remove": + for (o = 0, + n = a.length; n > o; o++) + s = a[o], + this._ids[s] && (delete this._ids[s], + u.push(s)) + } + this.length += l.length - u.length, + l.length && this._trigger("add", { + items: l + }, i), + c.length && this._trigger("update", { + items: c, + data: d + }, i), + u.length && this._trigger("remove", { + items: u + }, i) + } + } + , + o.prototype.on = s.prototype.on, + o.prototype.off = s.prototype.off, + o.prototype._trigger = s.prototype._trigger, + o.prototype.subscribe = o.prototype.on, + o.prototype.unsubscribe = o.prototype.off, + e.exports = o + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t, i) { + var o = this; + if (!(this instanceof n)) + throw new SyntaxError("Constructor must be called with the new operator"); + this.options = {}, + this.defaultOptions = { + locale: "en", + locales: Y, + clickToUse: !1 + }, + A.extend(this.options, this.defaultOptions), + this.body = { + container: e, + nodes: {}, + nodeIndices: [], + edges: {}, + edgeIndices: [], + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this), + once: this.once.bind(this) + }, + eventListeners: { + onTap: function() {}, + onTouch: function() {}, + onDoubleTap: function() {}, + onHold: function() {}, + onDragStart: function() {}, + onDrag: function() {}, + onDragEnd: function() {}, + onMouseWheel: function() {}, + onPinch: function() {}, + onMouseMove: function() {}, + onRelease: function() {}, + onContext: function() {} + }, + data: { + nodes: null, + edges: null + }, + functions: { + createNode: function() {}, + createEdge: function() {}, + getPointer: function() {} + }, + modules: {}, + view: { + scale: 1, + translation: { + x: 0, + y: 0 + } + } + }, + this.bindEventListeners(), + this.images = new r["default"](function() { + return o.body.emitter.emit("_requestRedraw") + } + ), + this.groups = new h["default"], + this.canvas = new _["default"](this.body), + this.selectionHandler = new M["default"](this.body,this.canvas), + this.interactionHandler = new O["default"](this.body,this.canvas,this.selectionHandler), + this.view = new k["default"](this.body,this.canvas), + this.renderer = new b["default"](this.body,this.canvas), + this.physics = new p["default"](this.body), + this.layoutEngine = new S["default"](this.body), + this.clustering = new y["default"](this.body), + this.manipulation = new T["default"](this.body,this.canvas,this.selectionHandler), + this.nodesHandler = new l["default"](this.body,this.images,this.groups,this.layoutEngine), + this.edgesHandler = new u["default"](this.body,this.images,this.groups), + this.body.modules.kamadaKawai = new z["default"](this.body,150,.05), + this.body.modules.clustering = this.clustering, + this.canvas._create(), + this.setOptions(i), + this.setData(t) + } + var s = i(12) + , r = o(s) + , a = i(13) + , h = o(a) + , d = i(14) + , l = o(d) + , c = i(35) + , u = o(c) + , f = i(44) + , p = o(f) + , v = i(53) + , y = o(v) + , g = i(56) + , b = o(g) + , m = i(57) + , _ = o(m) + , w = i(62) + , k = o(w) + , x = i(63) + , O = o(x) + , E = i(67) + , M = o(E) + , D = i(68) + , S = o(D) + , C = i(69) + , T = o(C) + , P = i(70) + , B = o(P) + , F = i(34) + , I = o(F) + , j = i(72) + , N = i(73) + , z = o(N); + i(75); + var R = i(76) + , A = i(1) + , L = (i(8), + i(10), + i(77)) + , H = i(78) + , W = i(79) + , Y = i(80); + R(n.prototype), + n.prototype.setOptions = function(e) { + var t = this; + if (void 0 !== e) { + var i = I["default"].validate(e, j.allOptions); + i === !0 && console.log("%cErrors have been found in the supplied options object.", F.printStyle); + var o = ["locale", "locales", "clickToUse"]; + if (A.selectiveDeepExtend(o, this.options, e), + e = this.layoutEngine.setOptions(e.layout, e), + this.canvas.setOptions(e), + this.groups.setOptions(e.groups), + this.nodesHandler.setOptions(e.nodes), + this.edgesHandler.setOptions(e.edges), + this.physics.setOptions(e.physics), + this.manipulation.setOptions(e.manipulation, e, this.options), + this.interactionHandler.setOptions(e.interaction), + this.renderer.setOptions(e.interaction), + this.selectionHandler.setOptions(e.interaction), + void 0 !== e.groups && this.body.emitter.emit("refreshNodes"), + "configure"in e && (this.configurator || (this.configurator = new B["default"](this,this.body.container,j.configureOptions,this.canvas.pixelRatio)), + this.configurator.setOptions(e.configure)), + this.configurator && this.configurator.options.enabled === !0) { + var n = { + nodes: {}, + edges: {}, + layout: {}, + interaction: {}, + manipulation: {}, + physics: {}, + global: {} + }; + A.deepExtend(n.nodes, this.nodesHandler.options), + A.deepExtend(n.edges, this.edgesHandler.options), + A.deepExtend(n.layout, this.layoutEngine.options), + A.deepExtend(n.interaction, this.selectionHandler.options), + A.deepExtend(n.interaction, this.renderer.options), + A.deepExtend(n.interaction, this.interactionHandler.options), + A.deepExtend(n.manipulation, this.manipulation.options), + A.deepExtend(n.physics, this.physics.options), + A.deepExtend(n.global, this.canvas.options), + A.deepExtend(n.global, this.options), + this.configurator.setModuleOptions(n) + } + void 0 !== e.clickToUse ? e.clickToUse === !0 ? void 0 === this.activator && (this.activator = new W(this.canvas.frame), + this.activator.on("change", function() { + t.body.emitter.emit("activate") + })) : (void 0 !== this.activator && (this.activator.destroy(), + delete this.activator), + this.body.emitter.emit("activate")) : this.body.emitter.emit("activate"), + this.canvas.setSize(), + this.body.emitter.emit("startSimulation") + } + } + , + n.prototype._updateVisibleIndices = function() { + var e = this.body.nodes + , t = this.body.edges; + this.body.nodeIndices = [], + this.body.edgeIndices = []; + for (var i in e) + e.hasOwnProperty(i) && e[i].options.hidden === !1 && this.body.nodeIndices.push(e[i].id); + for (var o in t) + t.hasOwnProperty(o) && t[o].options.hidden === !1 && this.body.edgeIndices.push(t[o].id) + } + , + n.prototype.bindEventListeners = function() { + var e = this; + this.body.emitter.on("_dataChanged", function() { + e._updateVisibleIndices(), + e.body.emitter.emit("_requestRedraw"), + e.body.emitter.emit("_dataUpdated") + }), + this.body.emitter.on("_dataUpdated", function() { + e._updateValueRange(e.body.nodes), + e._updateValueRange(e.body.edges), + e.body.emitter.emit("startSimulation"), + e.body.emitter.emit("_requestRedraw") + }) + } + , + n.prototype.setData = function(e) { + if (this.body.emitter.emit("resetPhysics"), + this.body.emitter.emit("_resetData"), + this.selectionHandler.unselectAll(), + e && e.dot && (e.nodes || e.edges)) + throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.'); + if (this.setOptions(e && e.options), + e && e.dot) { + console.log("The dot property has been depricated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);"); + var t = L.DOTToGraph(e.dot); + return void this.setData(t) + } + if (e && e.gephi) { + console.log("The gephi property has been depricated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);"); + var i = H.parseGephi(e.gephi); + return void this.setData(i) + } + this.nodesHandler.setData(e && e.nodes, !0), + this.edgesHandler.setData(e && e.edges, !0), + this.body.emitter.emit("_dataChanged"), + this.body.emitter.emit("_dataLoaded"), + this.body.emitter.emit("initPhysics") + } + , + n.prototype.destroy = function() { + this.body.emitter.emit("destroy"), + this.body.emitter.off(), + this.off(), + delete this.groups, + delete this.canvas, + delete this.selectionHandler, + delete this.interactionHandler, + delete this.view, + delete this.renderer, + delete this.physics, + delete this.layoutEngine, + delete this.clustering, + delete this.manipulation, + delete this.nodesHandler, + delete this.edgesHandler, + delete this.configurator, + delete this.images; + for (var e in this.body.nodes) + delete this.body.nodes[e]; + for (var t in this.body.edges) + delete this.body.edges[t]; + A.recursiveDOMDelete(this.body.container) + } + , + n.prototype._updateValueRange = function(e) { + var t, i = void 0, o = void 0, n = 0; + for (t in e) + if (e.hasOwnProperty(t)) { + var s = e[t].getValue(); + void 0 !== s && (i = void 0 === i ? s : Math.min(s, i), + o = void 0 === o ? s : Math.max(s, o), + n += s) + } + if (void 0 !== i && void 0 !== o) + for (t in e) + e.hasOwnProperty(t) && e[t].setValueRange(i, o, n) + } + , + n.prototype.isActive = function() { + return !this.activator || this.activator.active + } + , + n.prototype.setSize = function() { + return this.canvas.setSize.apply(this.canvas, arguments) + } + , + n.prototype.canvasToDOM = function() { + return this.canvas.canvasToDOM.apply(this.canvas, arguments) + } + , + n.prototype.DOMtoCanvas = function() { + return this.canvas.DOMtoCanvas.apply(this.canvas, arguments) + } + , + n.prototype.findNode = function() { + return this.clustering.findNode.apply(this.clustering, arguments) + } + , + n.prototype.isCluster = function() { + return this.clustering.isCluster.apply(this.clustering, arguments) + } + , + n.prototype.openCluster = function() { + return this.clustering.openCluster.apply(this.clustering, arguments) + } + , + n.prototype.cluster = function() { + return this.clustering.cluster.apply(this.clustering, arguments) + } + , + n.prototype.getNodesInCluster = function() { + return this.clustering.getNodesInCluster.apply(this.clustering, arguments) + } + , + n.prototype.clusterByConnection = function() { + return this.clustering.clusterByConnection.apply(this.clustering, arguments) + } + , + n.prototype.clusterByHubsize = function() { + return this.clustering.clusterByHubsize.apply(this.clustering, arguments) + } + , + n.prototype.clusterOutliers = function() { + return this.clustering.clusterOutliers.apply(this.clustering, arguments) + } + , + n.prototype.getSeed = function() { + return this.layoutEngine.getSeed.apply(this.layoutEngine, arguments) + } + , + n.prototype.enableEditMode = function() { + return this.manipulation.enableEditMode.apply(this.manipulation, arguments) + } + , + n.prototype.disableEditMode = function() { + return this.manipulation.disableEditMode.apply(this.manipulation, arguments) + } + , + n.prototype.addNodeMode = function() { + return this.manipulation.addNodeMode.apply(this.manipulation, arguments) + } + , + n.prototype.editNode = function() { + return this.manipulation.editNode.apply(this.manipulation, arguments) + } + , + n.prototype.editNodeMode = function() { + return console.log("Deprecated: Please use editNode instead of editNodeMode."), + this.manipulation.editNode.apply(this.manipulation, arguments) + } + , + n.prototype.addEdgeMode = function() { + return this.manipulation.addEdgeMode.apply(this.manipulation, arguments) + } + , + n.prototype.editEdgeMode = function() { + return this.manipulation.editEdgeMode.apply(this.manipulation, arguments) + } + , + n.prototype.deleteSelected = function() { + return this.manipulation.deleteSelected.apply(this.manipulation, arguments) + } + , + n.prototype.getPositions = function() { + return this.nodesHandler.getPositions.apply(this.nodesHandler, arguments) + } + , + n.prototype.storePositions = function() { + return this.nodesHandler.storePositions.apply(this.nodesHandler, arguments) + } + , + n.prototype.moveNode = function() { + return this.nodesHandler.moveNode.apply(this.nodesHandler, arguments) + } + , + n.prototype.getBoundingBox = function() { + return this.nodesHandler.getBoundingBox.apply(this.nodesHandler, arguments) + } + , + n.prototype.getConnectedNodes = function(e) { + return void 0 !== this.body.nodes[e] ? this.nodesHandler.getConnectedNodes.apply(this.nodesHandler, arguments) : this.edgesHandler.getConnectedNodes.apply(this.edgesHandler, arguments) + } + , + n.prototype.getConnectedEdges = function() { + return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler, arguments) + } + , + n.prototype.startSimulation = function() { + return this.physics.startSimulation.apply(this.physics, arguments) + } + , + n.prototype.stopSimulation = function() { + return this.physics.stopSimulation.apply(this.physics, arguments) + } + , + n.prototype.stabilize = function() { + return this.physics.stabilize.apply(this.physics, arguments) + } + , + n.prototype.getSelection = function() { + return this.selectionHandler.getSelection.apply(this.selectionHandler, arguments) + } + , + n.prototype.setSelection = function() { + return this.selectionHandler.setSelection.apply(this.selectionHandler, arguments) + } + , + n.prototype.getSelectedNodes = function() { + return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler, arguments) + } + , + n.prototype.getSelectedEdges = function() { + return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler, arguments) + } + , + n.prototype.getNodeAt = function() { + var e = this.selectionHandler.getNodeAt.apply(this.selectionHandler, arguments); + return void 0 !== e && void 0 !== e.id ? e.id : e + } + , + n.prototype.getEdgeAt = function() { + var e = this.selectionHandler.getEdgeAt.apply(this.selectionHandler, arguments); + return void 0 !== e && void 0 !== e.id ? e.id : e + } + , + n.prototype.selectNodes = function() { + return this.selectionHandler.selectNodes.apply(this.selectionHandler, arguments) + } + , + n.prototype.selectEdges = function() { + return this.selectionHandler.selectEdges.apply(this.selectionHandler, arguments) + } + , + n.prototype.unselectAll = function() { + this.selectionHandler.unselectAll.apply(this.selectionHandler, arguments), + this.redraw() + } + , + n.prototype.redraw = function() { + return this.renderer.redraw.apply(this.renderer, arguments) + } + , + n.prototype.getScale = function() { + return this.view.getScale.apply(this.view, arguments) + } + , + n.prototype.getViewPosition = function() { + return this.view.getViewPosition.apply(this.view, arguments) + } + , + n.prototype.fit = function() { + return this.view.fit.apply(this.view, arguments) + } + , + n.prototype.moveTo = function() { + return this.view.moveTo.apply(this.view, arguments) + } + , + n.prototype.focus = function() { + return this.view.focus.apply(this.view, arguments) + } + , + n.prototype.releaseNode = function() { + return this.view.releaseNode.apply(this.view, arguments) + } + , + n.prototype.getOptionsFromConfigurator = function() { + var e = {}; + return this.configurator && (e = this.configurator.getOptions.apply(this.configurator)), + e + } + , + e.exports = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t) { + i(this, e), + this.images = {}, + this.imageBroken = {}, + this.callback = t + } + return o(e, [{ + key: "_addImageToCache", + value: function(e, t) { + 0 === t.width && (document.body.appendChild(t), + t.width = t.offsetWidth, + t.height = t.offsetHeight, + document.body.removeChild(t)), + this.images[e] = t + } + }, { + key: "_tryloadBrokenUrl", + value: function(e, t, i) { + var o = this; + void 0 !== e && void 0 !== t && void 0 !== i && (i.onerror = function() { + console.error("Could not load brokenImage:", t), + o._addImageToCache(e, new Image) + } + , + i.src = t) + } + }, { + key: "_redrawWithImage", + value: function(e) { + this.callback && this.callback(e) + } + }, { + key: "load", + value: function(e, t, i) { + var o = this + , n = this.images[e]; + if (n) + return n; + var s = new Image; + return s.onload = function() { + o._addImageToCache(e, s), + o._redrawWithImage(s) + } + , + s.onerror = function() { + console.error("Could not load image:", e), + o._tryloadBrokenUrl(e, t, s) + } + , + s.src = e, + s + } + }]), + e + }(); + t["default"] = n + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = i(1) + , r = function() { + function e() { + o(this, e), + this.clear(), + this.defaultIndex = 0, + this.groupsArray = [], + this.groupIndex = 0, + this.defaultGroups = [{ + 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" + } + }, { + border: "#990000", + background: "#EE0000", + highlight: { + border: "#BB0000", + background: "#FF3333" + }, + hover: { + border: "#BB0000", + background: "#FF3333" + } + }, { + border: "#FF6000", + background: "#FF6000", + highlight: { + border: "#FF6000", + background: "#FF6000" + }, + hover: { + border: "#FF6000", + background: "#FF6000" + } + }, { + border: "#97C2FC", + background: "#2B7CE9", + highlight: { + border: "#D2E5FF", + background: "#2B7CE9" + }, + hover: { + border: "#D2E5FF", + background: "#2B7CE9" + } + }, { + border: "#399605", + background: "#255C03", + highlight: { + border: "#399605", + background: "#255C03" + }, + hover: { + border: "#399605", + background: "#255C03" + } + }, { + border: "#B70054", + background: "#FF007E", + highlight: { + border: "#B70054", + background: "#FF007E" + }, + hover: { + border: "#B70054", + background: "#FF007E" + } + }, { + border: "#AD85E4", + background: "#7C29F0", + highlight: { + border: "#D3BDF0", + background: "#7C29F0" + }, + hover: { + border: "#D3BDF0", + background: "#7C29F0" + } + }, { + border: "#4557FA", + background: "#000EA1", + highlight: { + border: "#6E6EFD", + background: "#000EA1" + }, + hover: { + border: "#6E6EFD", + background: "#000EA1" + } + }, { + border: "#FFC0CB", + background: "#FD5A77", + highlight: { + border: "#FFD1D9", + background: "#FD5A77" + }, + hover: { + border: "#FFD1D9", + background: "#FD5A77" + } + }, { + border: "#C2FABC", + background: "#74D66A", + highlight: { + border: "#E6FFE3", + background: "#74D66A" + }, + hover: { + border: "#E6FFE3", + background: "#74D66A" + } + }, { + border: "#EE0000", + background: "#990000", + highlight: { + border: "#FF3333", + background: "#BB0000" + }, + hover: { + border: "#FF3333", + background: "#BB0000" + } + }], + this.options = {}, + this.defaultOptions = { + useDefaultGroups: !0 + }, + s.extend(this.options, this.defaultOptions) + } + return n(e, [{ + key: "setOptions", + value: function(e) { + var t = ["useDefaultGroups"]; + if (void 0 !== e) + for (var i in e) + if (e.hasOwnProperty(i) && -1 === t.indexOf(i)) { + var o = e[i]; + this.add(i, o) + } + } + }, { + key: "clear", + value: function() { + this.groups = {}, + this.groupsArray = [] + } + }, { + key: "get", + value: function(e) { + var t = this.groups[e]; + if (void 0 === t) + if (this.options.useDefaultGroups === !1 && this.groupsArray.length > 0) { + var i = this.groupIndex % this.groupsArray.length; + this.groupIndex++, + t = {}, + t.color = this.groups[this.groupsArray[i]], + this.groups[e] = t + } else { + var o = this.defaultIndex % this.defaultGroups.length; + this.defaultIndex++, + t = {}, + t.color = this.defaultGroups[o], + this.groups[e] = t + } + return t + } + }, { + key: "add", + value: function(e, t) { + return this.groups[e] = t, + this.groupsArray.push(e), + t + } + }]), + e + }(); + t["default"] = r + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(15) + , a = o(r) + , h = i(16) + , d = o(h) + , l = i(1) + , c = i(8) + , u = i(10) + , f = function() { + function e(t, i, o, s) { + var r = this; + n(this, e), + this.body = t, + this.images = i, + this.groups = o, + this.layoutEngine = s, + this.body.functions.createNode = this.create.bind(this), + this.nodesListeners = { + add: function(e, t) { + r.add(t.items) + }, + update: function(e, t) { + r.update(t.items, t.data) + }, + remove: function(e, t) { + r.remove(t.items) + } + }, + this.options = {}, + this.defaultOptions = { + borderWidth: 1, + borderWidthSelected: 2, + brokenImage: void 0, + color: { + border: "#2B7CE9", + background: "#97C2FC", + highlight: { + border: "#2B7CE9", + background: "#D2E5FF" + }, + hover: { + border: "#2B7CE9", + background: "#D2E5FF" + } + }, + fixed: { + x: !1, + y: !1 + }, + font: { + color: "#343434", + size: 14, + face: "arial", + background: "none", + strokeWidth: 0, + strokeColor: "#ffffff", + align: "center" + }, + group: void 0, + hidden: !1, + icon: { + face: "FontAwesome", + code: void 0, + size: 50, + color: "#2B7CE9" + }, + image: void 0, + label: void 0, + labelHighlightBold: !0, + level: void 0, + mass: 1, + physics: !0, + scaling: { + min: 10, + max: 30, + label: { + enabled: !1, + min: 14, + max: 30, + maxVisible: 30, + drawThreshold: 5 + }, + customScalingFunction: function(e, t, i, o) { + if (t === e) + return .5; + var n = 1 / (t - e); + return Math.max(0, (o - e) * n) + } + }, + shadow: { + enabled: !1, + color: "rgba(0,0,0,0.5)", + size: 10, + x: 5, + y: 5 + }, + shape: "ellipse", + shapeProperties: { + borderDashes: !1, + borderRadius: 6, + interpolation: !0, + useImageSize: !1, + useBorderWithImage: !1 + }, + size: 25, + title: void 0, + value: void 0, + x: void 0, + y: void 0 + }, + l.extend(this.options, this.defaultOptions), + this.bindEventListeners() + } + return s(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("refreshNodes", this.refresh.bind(this)), + this.body.emitter.on("refresh", this.refresh.bind(this)), + this.body.emitter.on("destroy", function() { + l.forEach(e.nodesListeners, function(t, i) { + e.body.data.nodes && e.body.data.nodes.off(i, t) + }), + delete e.body.functions.createNode, + delete e.nodesListeners.add, + delete e.nodesListeners.update, + delete e.nodesListeners.remove, + delete e.nodesListeners + }) + } + }, { + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + if (a["default"].parseOptions(this.options, e), + void 0 !== e.shape) + for (var t in this.body.nodes) + this.body.nodes.hasOwnProperty(t) && this.body.nodes[t].updateShape(); + if (void 0 !== e.font) { + d["default"].parseOptions(this.options.font, e); + for (var i in this.body.nodes) + this.body.nodes.hasOwnProperty(i) && (this.body.nodes[i].updateLabelModule(), + this.body.nodes[i]._reset()) + } + if (void 0 !== e.size) + for (var o in this.body.nodes) + this.body.nodes.hasOwnProperty(o) && this.body.nodes[o]._reset(); + void 0 === e.hidden && void 0 === e.physics || this.body.emitter.emit("_dataChanged") + } + } + }, { + key: "setData", + value: function(e) { + var t = this + , i = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1] + , o = this.body.data.nodes; + if (e instanceof c || e instanceof u) + this.body.data.nodes = e; + else if (Array.isArray(e)) + this.body.data.nodes = new c, + this.body.data.nodes.add(e); + else { + if (e) + throw new TypeError("Array or DataSet expected"); + this.body.data.nodes = new c + } + o && l.forEach(this.nodesListeners, function(e, t) { + o.off(t, e) + }), + this.body.nodes = {}, + this.body.data.nodes && !function() { + var e = t; + l.forEach(t.nodesListeners, function(t, i) { + e.body.data.nodes.on(i, t) + }); + var i = t.body.data.nodes.getIds(); + t.add(i, !0) + }(), + i === !1 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "add", + value: function(e) { + for (var t = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1], i = void 0, o = [], n = 0; n < e.length; n++) { + i = e[n]; + var s = this.body.data.nodes.get(i) + , r = this.create(s); + o.push(r), + this.body.nodes[i] = r + } + this.layoutEngine.positionInitially(o), + t === !1 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "update", + value: function(e, t) { + for (var i = this.body.nodes, o = !1, n = 0; n < e.length; n++) { + var s = e[n] + , r = i[s] + , a = t[n]; + void 0 !== r ? o = r.setOptions(a) : (o = !0, + r = this.create(a), + i[s] = r) + } + o === !0 ? this.body.emitter.emit("_dataChanged") : this.body.emitter.emit("_dataUpdated") + } + }, { + key: "remove", + value: function(e) { + for (var t = this.body.nodes, i = 0; i < e.length; i++) { + var o = e[i]; + delete t[o] + } + this.body.emitter.emit("_dataChanged") + } + }, { + key: "create", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? a["default"] : arguments[1]; + return new t(e,this.body,this.images,this.groups,this.options) + } + }, { + key: "refresh", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? !1 : arguments[0] + , t = this.body.nodes; + for (var i in t) { + var o = void 0; + t.hasOwnProperty(i) && (o = t[i]); + var n = this.body.data.nodes._data[i]; + void 0 !== o && void 0 !== n && (e === !0 && o.setOptions({ + x: null, + y: null + }), + o.setOptions({ + fixed: !1 + }), + o.setOptions(n)) + } + } + }, { + key: "getPositions", + value: function(e) { + var t = {}; + if (void 0 !== e) { + if (Array.isArray(e) === !0) { + for (var i = 0; i < e.length; i++) + if (void 0 !== this.body.nodes[e[i]]) { + var o = this.body.nodes[e[i]]; + t[e[i]] = { + x: Math.round(o.x), + y: Math.round(o.y) + } + } + } else if (void 0 !== this.body.nodes[e]) { + var n = this.body.nodes[e]; + t[e] = { + x: Math.round(n.x), + y: Math.round(n.y) + } + } + } else + for (var s = 0; s < this.body.nodeIndices.length; s++) { + var r = this.body.nodes[this.body.nodeIndices[s]]; + t[this.body.nodeIndices[s]] = { + x: Math.round(r.x), + y: Math.round(r.y) + } + } + return t + } + }, { + key: "storePositions", + value: function() { + var e = [] + , t = this.body.data.nodes.getDataSet(); + for (var i in t._data) + if (t._data.hasOwnProperty(i)) { + var o = this.body.nodes[i]; + t._data[i].x == Math.round(o.x) && t._data[i].y == Math.round(o.y) || e.push({ + id: o.id, + x: Math.round(o.x), + y: Math.round(o.y) + }) + } + t.update(e) + } + }, { + key: "getBoundingBox", + value: function(e) { + return void 0 !== this.body.nodes[e] ? this.body.nodes[e].shape.boundingBox : void 0 + } + }, { + key: "getConnectedNodes", + value: function(e) { + var t = []; + if (void 0 !== this.body.nodes[e]) + for (var i = this.body.nodes[e], o = {}, n = 0; n < i.edges.length; n++) { + var s = i.edges[n]; + s.toId == i.id ? void 0 === o[s.fromId] && (t.push(s.fromId), + o[s.fromId] = !0) : s.fromId == i.id && void 0 === o[s.toId] && (t.push(s.toId), + o[s.toId] = !0) + } + return t + } + }, { + key: "getConnectedEdges", + value: function(e) { + var t = []; + if (void 0 !== this.body.nodes[e]) + for (var i = this.body.nodes[e], o = 0; o < i.edges.length; o++) + t.push(i.edges[o].id); + else + console.log("NodeId provided for getConnectedEdges does not exist. Provided: ", e); + return t + } + }, { + key: "moveNode", + value: function(e, t, i) { + var o = this; + void 0 !== this.body.nodes[e] ? (this.body.nodes[e].x = Number(t), + this.body.nodes[e].y = Number(i), + setTimeout(function() { + o.body.emitter.emit("startSimulation") + }, 0)) : console.log("Node id supplied to moveNode does not exist. Provided: ", e) + } + }]), + e + }(); + t["default"] = f + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(16) + , a = o(r) + , h = i(17) + , d = o(h) + , l = i(19) + , c = o(l) + , u = i(21) + , f = o(u) + , p = i(22) + , v = o(p) + , y = i(23) + , g = o(y) + , b = i(25) + , m = o(b) + , _ = i(26) + , w = o(_) + , k = i(27) + , x = o(k) + , O = i(28) + , E = o(O) + , M = i(29) + , D = o(M) + , S = i(30) + , C = o(S) + , T = i(31) + , P = o(T) + , B = i(32) + , F = o(B) + , I = i(33) + , j = o(I) + , N = i(34) + , z = (o(N), + i(1)) + , R = function() { + function e(t, i, o, s, r) { + n(this, e), + this.options = z.bridgeObject(r), + this.globalOptions = r, + this.body = i, + this.edges = [], + this.id = void 0, + this.imagelist = o, + this.grouplist = s, + this.x = void 0, + this.y = void 0, + this.baseSize = this.options.size, + this.baseFontSize = this.options.font.size, + this.predefinedPosition = !1, + this.selected = !1, + this.hover = !1, + this.labelModule = new a["default"](this.body,this.options,!1), + this.setOptions(t) + } + return s(e, [{ + key: "attachEdge", + value: function(e) { + -1 === this.edges.indexOf(e) && this.edges.push(e) + } + }, { + key: "detachEdge", + value: function(e) { + var t = this.edges.indexOf(e); + -1 != t && this.edges.splice(t, 1) + } + }, { + key: "setOptions", + value: function(t) { + var i = this.options.shape; + if (t) { + if (void 0 !== t.id && (this.id = t.id), + void 0 === this.id) + throw "Node must have an id"; + if (void 0 !== t.x && (null === t.x ? (this.x = void 0, + this.predefinedPosition = !1) : (this.x = parseInt(t.x), + this.predefinedPosition = !0)), + void 0 !== t.y && (null === t.y ? (this.y = void 0, + this.predefinedPosition = !1) : (this.y = parseInt(t.y), + this.predefinedPosition = !0)), + void 0 !== t.size && (this.baseSize = t.size), + void 0 !== t.value && (t.value = parseFloat(t.value)), + "number" == typeof t.group || "string" == typeof t.group && "" != t.group) { + var o = this.grouplist.get(t.group); + z.deepExtend(this.options, o), + this.options.color = z.parseColor(this.options.color) + } + if (e.parseOptions(this.options, t, !0, this.globalOptions), + void 0 !== this.options.image) { + if (!this.imagelist) + throw "No imagelist provided"; + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id) + } + return this.updateLabelModule(), + this.updateShape(i), + void 0 !== t.hidden || void 0 !== t.physics + } + } + }, { + key: "updateLabelModule", + value: function() { + void 0 !== this.options.label && null !== this.options.label || (this.options.label = ""), + this.labelModule.setOptions(this.options, !0), + void 0 !== this.labelModule.baseSize && (this.baseFontSize = this.labelModule.baseSize) + } + }, { + key: "updateShape", + value: function(e) { + if (e === this.options.shape && this.shape) + this.shape.setOptions(this.options, this.imageObj); + else + switch (this.options.shape) { + case "box": + this.shape = new d["default"](this.options,this.body,this.labelModule); + break; + case "circle": + this.shape = new c["default"](this.options,this.body,this.labelModule); + break; + case "circularImage": + this.shape = new f["default"](this.options,this.body,this.labelModule,this.imageObj); + break; + case "database": + this.shape = new v["default"](this.options,this.body,this.labelModule); + break; + case "diamond": + this.shape = new g["default"](this.options,this.body,this.labelModule); + break; + case "dot": + this.shape = new m["default"](this.options,this.body,this.labelModule); + break; + case "ellipse": + this.shape = new w["default"](this.options,this.body,this.labelModule); + break; + case "icon": + this.shape = new x["default"](this.options,this.body,this.labelModule); + break; + case "image": + this.shape = new E["default"](this.options,this.body,this.labelModule,this.imageObj); + break; + case "square": + this.shape = new D["default"](this.options,this.body,this.labelModule); + break; + case "star": + this.shape = new C["default"](this.options,this.body,this.labelModule); + break; + case "text": + this.shape = new P["default"](this.options,this.body,this.labelModule); + break; + case "triangle": + this.shape = new F["default"](this.options,this.body,this.labelModule); + break; + case "triangleDown": + this.shape = new j["default"](this.options,this.body,this.labelModule); + break; + default: + this.shape = new w["default"](this.options,this.body,this.labelModule) + } + this._reset() + } + }, { + key: "select", + value: function() { + this.selected = !0, + this._reset() + } + }, { + key: "unselect", + value: function() { + this.selected = !1, + this._reset() + } + }, { + key: "_reset", + value: function() { + this.shape.width = void 0, + this.shape.height = void 0 + } + }, { + key: "getTitle", + value: function() { + return this.options.title + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this.shape.distanceToBorder(e, t) + } + }, { + key: "isFixed", + value: function() { + return this.options.fixed.x && this.options.fixed.y + } + }, { + key: "isSelected", + value: function() { + return this.selected + } + }, { + key: "getValue", + value: function() { + return this.options.value + } + }, { + key: "setValueRange", + value: function(e, t, i) { + if (void 0 !== this.options.value) { + var o = this.options.scaling.customScalingFunction(e, t, i, this.options.value) + , n = this.options.scaling.max - this.options.scaling.min; + if (this.options.scaling.label.enabled === !0) { + var s = this.options.scaling.label.max - this.options.scaling.label.min; + this.options.font.size = this.options.scaling.label.min + o * s + } + this.options.size = this.options.scaling.min + o * n + } else + this.options.size = this.baseSize, + this.options.font.size = this.baseFontSize; + this.updateLabelModule() + } + }, { + key: "draw", + value: function(e) { + this.shape.draw(e, this.x, this.y, this.selected, this.hover) + } + }, { + key: "updateBoundingBox", + value: function(e) { + this.shape.updateBoundingBox(this.x, this.y, e) + } + }, { + key: "resize", + value: function(e) { + this.shape.resize(e, this.selected) + } + }, { + key: "isOverlappingWith", + value: function(e) { + return this.shape.left < e.right && this.shape.left + this.shape.width > e.left && this.shape.top < e.bottom && this.shape.top + this.shape.height > e.top + } + }, { + key: "isBoundingBoxOverlappingWith", + value: function(e) { + return this.shape.boundingBox.left < e.right && this.shape.boundingBox.right > e.left && this.shape.boundingBox.top < e.bottom && this.shape.boundingBox.bottom > e.top + } + }], [{ + key: "parseOptions", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = arguments.length <= 3 || void 0 === arguments[3] ? {} : arguments[3] + , n = ["color", "font", "fixed", "shadow"]; + if (z.selectiveNotDeepExtend(n, e, t, i), + z.mergeOptions(e, t, "shadow", i, o), + void 0 !== t.color && null !== t.color) { + var s = z.parseColor(t.color); + z.fillIfDefined(e.color, s) + } else + i === !0 && null === t.color && (e.color = z.bridgeObject(o.color)); + void 0 !== t.fixed && null !== t.fixed && ("boolean" == typeof t.fixed ? (e.fixed.x = t.fixed, + e.fixed.y = t.fixed) : (void 0 !== t.fixed.x && "boolean" == typeof t.fixed.x && (e.fixed.x = t.fixed.x), + void 0 !== t.fixed.y && "boolean" == typeof t.fixed.y && (e.fixed.y = t.fixed.y))), + void 0 !== t.font && null !== t.font ? a["default"].parseOptions(e.font, t) : i === !0 && null === t.font && (e.font = z.bridgeObject(o.font)), + void 0 !== t.scaling && z.mergeOptions(e.scaling, t.scaling, "label", i, o.scaling) + } + }]), + e + }(); + t["default"] = R + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + var i = [] + , o = !0 + , n = !1 + , s = void 0; + try { + for (var r, a = e[Symbol.iterator](); !(o = (r = a.next()).done) && (i.push(r.value), + !t || i.length !== t); o = !0) + ; + } catch (h) { + n = !0, + s = h + } finally { + try { + !o && a["return"] && a["return"]() + } finally { + if (n) + throw s + } + } + return i + } + return function(t, i) { + if (Array.isArray(t)) + return t; + if (Symbol.iterator in Object(t)) + return e(t, i); + throw new TypeError("Invalid attempt to destructure non-iterable instance") + } + }() + , s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , r = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , a = i(1) + , h = function() { + function e(t, i) { + var n = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2]; + o(this, e), + this.body = t, + this.pointToSelf = !1, + this.baseSize = void 0, + this.fontOptions = {}, + this.setOptions(i), + this.size = { + top: 0, + left: 0, + width: 0, + height: 0, + yLine: 0 + }, + this.isEdgeLabel = n + } + return r(e, [{ + key: "setOptions", + value: function(t) { + var i = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1]; + this.nodeOptions = t, + this.fontOptions = a.deepExtend({}, t.font, !0), + void 0 !== t.label && (this.labelDirty = !0), + void 0 !== t.font && (e.parseOptions(this.fontOptions, t, i), + "string" == typeof t.font ? this.baseSize = this.fontOptions.size : "object" === s(t.font) && void 0 !== t.font.size && (this.baseSize = t.font.size)) + } + }, { + key: "draw", + value: function(e, t, i, o) { + var n = arguments.length <= 4 || void 0 === arguments[4] ? "middle" : arguments[4]; + if (void 0 !== this.nodeOptions.label) { + var s = this.fontOptions.size * this.body.view.scale; + this.nodeOptions.label && s < this.nodeOptions.scaling.label.drawThreshold - 1 || (this.calculateLabelSize(e, o, t, i, n), + this._drawBackground(e), + this._drawText(e, o, t, i, n)) + } + } + }, { + key: "_drawBackground", + value: function(e) { + if (void 0 !== this.fontOptions.background && "none" !== this.fontOptions.background) { + e.fillStyle = this.fontOptions.background; + var t = 2; + if (this.isEdgeLabel) + switch (this.fontOptions.align) { + case "middle": + e.fillRect(.5 * -this.size.width, .5 * -this.size.height, this.size.width, this.size.height); + break; + case "top": + e.fillRect(.5 * -this.size.width, -(this.size.height + t), this.size.width, this.size.height); + break; + case "bottom": + e.fillRect(.5 * -this.size.width, t, this.size.width, this.size.height); + break; + default: + e.fillRect(this.size.left, this.size.top - .5 * t, this.size.width, this.size.height) + } + else + e.fillRect(this.size.left, this.size.top - .5 * t, this.size.width, this.size.height) + } + } + }, { + key: "_drawText", + value: function(e, t, i, o) { + var s = arguments.length <= 4 || void 0 === arguments[4] ? "middle" : arguments[4] + , r = this.fontOptions.size + , a = r * this.body.view.scale; + a >= this.nodeOptions.scaling.label.maxVisible && (r = Number(this.nodeOptions.scaling.label.maxVisible) / this.body.view.scale); + var h = this.size.yLine + , d = this._getColor(a) + , l = n(d, 2) + , c = l[0] + , u = l[1] + , f = this._setAlignment(e, i, h, s) + , p = n(f, 2); + i = p[0], + h = p[1], + e.font = (t && this.nodeOptions.labelHighlightBold ? "bold " : "") + r + "px " + this.fontOptions.face, + e.fillStyle = c, + this.isEdgeLabel || "left" !== this.fontOptions.align ? e.textAlign = "center" : (e.textAlign = this.fontOptions.align, + i -= .5 * this.size.width), + this.fontOptions.strokeWidth > 0 && (e.lineWidth = this.fontOptions.strokeWidth, + e.strokeStyle = u, + e.lineJoin = "round"); + for (var v = 0; v < this.lineCount; v++) + this.fontOptions.strokeWidth > 0 && e.strokeText(this.lines[v], i, h), + e.fillText(this.lines[v], i, h), + h += r + } + }, { + key: "_setAlignment", + value: function(e, t, i, o) { + if (this.isEdgeLabel && "horizontal" !== this.fontOptions.align && this.pointToSelf === !1) { + t = 0, + i = 0; + var n = 2; + "top" === this.fontOptions.align ? (e.textBaseline = "alphabetic", + i -= 2 * n) : "bottom" === this.fontOptions.align ? (e.textBaseline = "hanging", + i += 2 * n) : e.textBaseline = "middle" + } else + e.textBaseline = o; + return [t, i] + } + }, { + key: "_getColor", + value: function(e) { + var t = this.fontOptions.color || "#000000" + , i = this.fontOptions.strokeColor || "#ffffff"; + if (e <= this.nodeOptions.scaling.label.drawThreshold) { + var o = Math.max(0, Math.min(1, 1 - (this.nodeOptions.scaling.label.drawThreshold - e))); + t = a.overrideOpacity(t, o), + i = a.overrideOpacity(i, o) + } + return [t, i] + } + }, { + key: "getTextSize", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1] + , i = { + width: this._processLabel(e, t), + height: this.fontOptions.size * this.lineCount, + lineCount: this.lineCount + }; + return i + } + }, { + key: "calculateLabelSize", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? 0 : arguments[2] + , o = arguments.length <= 3 || void 0 === arguments[3] ? 0 : arguments[3] + , n = arguments.length <= 4 || void 0 === arguments[4] ? "middle" : arguments[4]; + this.labelDirty === !0 && (this.size.width = this._processLabel(e, t)), + this.size.height = this.fontOptions.size * this.lineCount, + this.size.left = i - .5 * this.size.width, + this.size.top = o - .5 * this.size.height, + this.size.yLine = o + .5 * (1 - this.lineCount) * this.fontOptions.size, + "hanging" === n && (this.size.top += .5 * this.fontOptions.size, + this.size.top += 4, + this.size.yLine += 4), + this.labelDirty = !1 + } + }, { + key: "_processLabel", + value: function(e, t) { + var i = 0 + , o = [""] + , n = 0; + if (void 0 !== this.nodeOptions.label) { + o = String(this.nodeOptions.label).split("\n"), + n = o.length, + e.font = (t && this.nodeOptions.labelHighlightBold ? "bold " : "") + this.fontOptions.size + "px " + this.fontOptions.face, + i = e.measureText(o[0]).width; + for (var s = 1; n > s; s++) { + var r = e.measureText(o[s]).width; + i = r > i ? r : i + } + } + return this.lines = o, + this.lineCount = n, + i + } + }], [{ + key: "parseOptions", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2]; + if ("string" == typeof t.font) { + var o = t.font.split(" "); + e.size = o[0].replace("px", ""), + e.face = o[1], + e.color = o[2] + } else + "object" === s(t.font) && a.fillIfDefined(e, t.font, i); + e.size = Number(e.size) + } + }]), + e + }(); + t["default"] = h + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e, t) { + if (void 0 === this.width) { + var i = 5 + , o = this.labelModule.getTextSize(e, t); + this.width = o.width + 2 * i, + this.height = o.height + 2 * i, + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(e, o), + this.left = t - this.width / 2, + this.top = i - this.height / 2; + var s = this.options.borderWidth + , r = this.options.borderWidthSelected || 2 * this.options.borderWidth; + e.strokeStyle = o ? this.options.color.highlight.border : n ? this.options.color.hover.border : this.options.color.border, + e.lineWidth = o ? r : s, + e.lineWidth /= this.body.view.scale, + e.lineWidth = Math.min(this.width, e.lineWidth), + e.fillStyle = o ? this.options.color.highlight.background : n ? this.options.color.hover.background : this.options.color.background; + var a = this.options.shapeProperties.borderRadius; + e.roundRect(this.left, this.top, this.width, this.height, a), + this.enableShadow(e), + e.fill(), + this.disableShadow(e), + e.save(), + s > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore(), + this.updateBoundingBox(t, i, e, o), + this.labelModule.draw(e, t, i, o) + } + }, { + key: "updateBoundingBox", + value: function(e, t, i, o) { + this.resize(i, o), + this.left = e - .5 * this.width, + this.top = t - .5 * this.height; + var n = this.options.shapeProperties.borderRadius; + this.boundingBox.left = this.left - n, + this.boundingBox.top = this.top - n, + this.boundingBox.bottom = this.top + this.height + n, + this.boundingBox.right = this.left + this.width + n + } + }, { + key: "distanceToBorder", + value: function(e, t) { + this.resize(e); + var i = this.options.borderWidth; + return Math.min(Math.abs(this.width / 2 / Math.cos(t)), Math.abs(this.height / 2 / Math.sin(t))) + i + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = o, + this.labelModule = n, + this.setOptions(t), + this.top = void 0, + this.left = void 0, + this.height = void 0, + this.width = void 0, + this.radius = void 0, + this.boundingBox = { + top: 0, + left: 0, + right: 0, + bottom: 0 + } + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "_distanceToBorder", + value: function(e, t) { + var i = this.options.borderWidth; + return this.resize(e), + Math.min(Math.abs(this.width / 2 / Math.cos(t)), Math.abs(this.height / 2 / Math.sin(t))) + i + } + }, { + key: "enableShadow", + value: function(e) { + this.options.shadow.enabled === !0 && (e.shadowColor = this.options.shadow.color, + e.shadowBlur = this.options.shadow.size, + e.shadowOffsetX = this.options.shadow.x, + e.shadowOffsetY = this.options.shadow.y) + } + }, { + key: "disableShadow", + value: function(e) { + this.options.shadow.enabled === !0 && (e.shadowColor = "rgba(0,0,0,0)", + e.shadowBlur = 0, + e.shadowOffsetX = 0, + e.shadowOffsetY = 0) + } + }, { + key: "enableBorderDashes", + value: function(e) { + if (this.options.shapeProperties.borderDashes !== !1) + if (void 0 !== e.setLineDash) { + var t = this.options.shapeProperties.borderDashes; + t === !0 && (t = [5, 15]), + e.setLineDash(t) + } else + console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."), + this.options.shapeProperties.borderDashes = !1 + } + }, { + key: "disableBorderDashes", + value: function(e) { + this.options.shapeProperties.borderDashes !== !1 && (void 0 !== e.setLineDash ? e.setLineDash([0]) : (console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."), + this.options.shapeProperties.borderDashes = !1)) + } + }]), + e + }(); + t["default"] = n + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(20) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e, t) { + if (void 0 === this.width) { + var i = 5 + , o = this.labelModule.getTextSize(e, t) + , n = Math.max(o.width, o.height) + 2 * i; + this.options.size = n / 2, + this.width = n, + this.height = n, + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(e, o), + this.left = t - this.width / 2, + this.top = i - this.height / 2, + this._drawRawCircle(e, t, i, o, n, this.options.size), + this.boundingBox.top = i - this.options.size, + this.boundingBox.left = t - this.options.size, + this.boundingBox.right = t + this.options.size, + this.boundingBox.bottom = i + this.options.size, + this.updateBoundingBox(t, i), + this.labelModule.draw(e, t, i, o) + } + }, { + key: "updateBoundingBox", + value: function(e, t) { + this.boundingBox.top = t - this.options.size, + this.boundingBox.left = e - this.options.size, + this.boundingBox.right = e + this.options.size, + this.boundingBox.bottom = t + this.options.size + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this.resize(e), + .5 * this.width + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + n(this, t); + var r = s(this, Object.getPrototypeOf(t).call(this, e, i, o)); + return r.labelOffset = 0, + r.imageLoaded = !1, + r + } + return r(t, e), + a(t, [{ + key: "setOptions", + value: function(e, t) { + this.options = e, + t && (this.imageObj = t) + } + }, { + key: "_resizeImage", + value: function() { + var e = !1; + if (this.imageObj.width && this.imageObj.height ? this.imageLoaded === !1 && (this.imageLoaded = !0, + e = !0) : this.imageLoaded = !1, + !this.width || !this.height || e === !0) { + var t, i, o; + this.imageObj.width && this.imageObj.height && (t = 0, + i = 0), + this.options.shapeProperties.useImageSize === !1 ? this.imageObj.width > this.imageObj.height ? (o = this.imageObj.width / this.imageObj.height, + t = 2 * this.options.size * o || this.imageObj.width, + i = 2 * this.options.size || this.imageObj.height) : (o = this.imageObj.width && this.imageObj.height ? this.imageObj.height / this.imageObj.width : 1, + t = 2 * this.options.size, + i = 2 * this.options.size * o) : (t = this.imageObj.width, + i = this.imageObj.height), + this.width = t, + this.height = i, + this.radius = .5 * this.width + } + } + }, { + key: "_drawRawCircle", + value: function(e, t, i, o, n, s) { + var r = this.options.borderWidth + , a = this.options.borderWidthSelected || 2 * this.options.borderWidth + , h = (o ? a : r) / this.body.view.scale; + e.lineWidth = Math.min(this.width, h), + e.strokeStyle = o ? this.options.color.highlight.border : n ? this.options.color.hover.border : this.options.color.border, + e.fillStyle = o ? this.options.color.highlight.background : n ? this.options.color.hover.background : this.options.color.background, + e.circle(t, i, s), + this.enableShadow(e), + e.fill(), + this.disableShadow(e), + e.save(), + h > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore() + } + }, { + key: "_drawImageAtPosition", + value: function(e) { + if (0 != this.imageObj.width) { + e.globalAlpha = 1, + this.enableShadow(e); + var t = this.imageObj.width / this.width / this.body.view.scale; + if (t > 2 && this.options.shapeProperties.interpolation === !0) { + var i = this.imageObj.width + , o = this.imageObj.height + , n = document.createElement("canvas"); + n.width = i, + n.height = i; + var s = n.getContext("2d"); + t *= .5, + i *= .5, + o *= .5, + s.drawImage(this.imageObj, 0, 0, i, o); + for (var r = 0, a = 1; t > 2 && 4 > a; ) + s.drawImage(n, r, 0, i, o, r + i, 0, i / 2, o / 2), + r += i, + t *= .5, + i *= .5, + o *= .5, + a += 1; + e.drawImage(n, r, 0, i, o, this.left, this.top, this.width, this.height) + } else + e.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + this.disableShadow(e) + } + } + }, { + key: "_drawImageLabel", + value: function(e, t, i, o) { + var n, s = 0; + if (void 0 !== this.height) { + s = .5 * this.height; + var r = this.labelModule.getTextSize(e); + r.lineCount >= 1 && (s += r.height / 2) + } + n = i + s, + this.options.label && (this.labelOffset = s), + this.labelModule.draw(e, t, n, o, "hanging") + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(20) + , d = o(h) + , l = function(e) { + function t(e, i, o, r) { + n(this, t); + var a = s(this, Object.getPrototypeOf(t).call(this, e, i, o)); + return a.imageObj = r, + a._swapToImageResizeWhenImageLoaded = !0, + a + } + return r(t, e), + a(t, [{ + key: "resize", + value: function() { + if (void 0 === this.imageObj.src || void 0 === this.imageObj.width || void 0 === this.imageObj.height) { + if (!this.width) { + var e = 2 * this.options.size; + this.width = e, + this.height = e, + this._swapToImageResizeWhenImageLoaded = !0, + this.radius = .5 * this.width + } + } else + this._swapToImageResizeWhenImageLoaded && (this.width = void 0, + this.height = void 0, + this._swapToImageResizeWhenImageLoaded = !1), + this._resizeImage() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(), + this.left = t - this.width / 2, + this.top = i - this.height / 2; + var s = Math.min(.5 * this.height, .5 * this.width); + this._drawRawCircle(e, t, i, o, n, s), + e.save(), + e.clip(), + this._drawImageAtPosition(e), + e.restore(), + this._drawImageLabel(e, t, i, o), + this.updateBoundingBox(t, i) + } + }, { + key: "updateBoundingBox", + value: function(e, t) { + this.boundingBox.top = t - this.options.size, + this.boundingBox.left = e - this.options.size, + this.boundingBox.right = e + this.options.size, + this.boundingBox.bottom = t + this.options.size, + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this.resize(e), + .5 * this.width + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e, t) { + if (void 0 === this.width) { + var i = 5 + , o = this.labelModule.getTextSize(e, t) + , n = o.width + 2 * i; + this.width = n, + this.height = n, + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(e, o), + this.left = t - this.width / 2, + this.top = i - this.height / 2; + var s = this.options.borderWidth + , r = this.options.borderWidthSelected || 2 * this.options.borderWidth + , a = (o ? r : s) / this.body.view.scale; + e.lineWidth = Math.min(this.width, a), + e.strokeStyle = o ? this.options.color.highlight.border : n ? this.options.color.hover.border : this.options.color.border, + e.fillStyle = o ? this.options.color.highlight.background : n ? this.options.color.hover.background : this.options.color.background, + e.database(t - this.width / 2, i - .5 * this.height, this.width, this.height), + this.enableShadow(e), + e.fill(), + this.disableShadow(e), + e.save(), + a > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore(), + this.updateBoundingBox(t, i, e, o), + this.labelModule.draw(e, t, i, o) + } + }, { + key: "updateBoundingBox", + value: function(e, t, i, o) { + this.resize(i, o), + this.left = e - .5 * this.width, + this.top = t - .5 * this.height, + this.boundingBox.left = this.left, + this.boundingBox.top = this.top, + this.boundingBox.bottom = this.top + this.height, + this.boundingBox.right = this.left + this.width + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "diamond", 4, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_resizeShape", + value: function() { + if (void 0 === this.width) { + var e = 2 * this.options.size; + this.width = e, + this.height = e, + this.radius = .5 * this.width + } + } + }, { + key: "_drawShape", + value: function(e, t, i, o, n, s, r) { + this._resizeShape(), + this.left = o - this.width / 2, + this.top = n - this.height / 2; + var a = this.options.borderWidth + , h = this.options.borderWidthSelected || 2 * this.options.borderWidth + , d = (s ? h : a) / this.body.view.scale; + if (e.lineWidth = Math.min(this.width, d), + e.strokeStyle = s ? this.options.color.highlight.border : r ? this.options.color.hover.border : this.options.color.border, + e.fillStyle = s ? this.options.color.highlight.background : r ? this.options.color.hover.background : this.options.color.background, + e[t](o, n, this.options.size), + this.enableShadow(e), + e.fill(), + this.disableShadow(e), + e.save(), + d > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore(), + void 0 !== this.options.label) { + var l = n + .5 * this.height + 3; + this.labelModule.draw(e, o, l, s, "hanging") + } + this.updateBoundingBox(o, n) + } + }, { + key: "updateBoundingBox", + value: function(e, t) { + this.boundingBox.top = t - this.options.size, + this.boundingBox.left = e - this.options.size, + this.boundingBox.right = e + this.options.size, + this.boundingBox.bottom = t + this.options.size, + void 0 !== this.options.label && this.labelModule.size.width > 0 && (this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + 3)) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "circle", 2, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this.resize(e), + this.options.size + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e, t) { + if (void 0 === this.width) { + var i = this.labelModule.getTextSize(e, t); + this.width = 1.5 * i.width, + this.height = 2 * i.height, + this.width < this.height && (this.width = this.height), + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(e, o), + this.left = t - .5 * this.width, + this.top = i - .5 * this.height; + var s = this.options.borderWidth + , r = this.options.borderWidthSelected || 2 * this.options.borderWidth + , a = (o ? r : s) / this.body.view.scale; + e.lineWidth = Math.min(this.width, a), + e.strokeStyle = o ? this.options.color.highlight.border : n ? this.options.color.hover.border : this.options.color.border, + e.fillStyle = o ? this.options.color.highlight.background : n ? this.options.color.hover.background : this.options.color.background, + e.ellipse(this.left, this.top, this.width, this.height), + this.enableShadow(e), + e.fill(), + this.disableShadow(e), + e.save(), + a > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore(), + this.updateBoundingBox(t, i, e, o), + this.labelModule.draw(e, t, i, o) + } + }, { + key: "updateBoundingBox", + value: function(e, t, i, o) { + this.resize(i, o), + this.left = e - .5 * this.width, + this.top = t - .5 * this.height, + this.boundingBox.left = this.left, + this.boundingBox.top = this.top, + this.boundingBox.bottom = this.top + this.height, + this.boundingBox.right = this.left + this.width + } + }, { + key: "distanceToBorder", + value: function(e, t) { + this.resize(e); + var i = .5 * this.width + , o = .5 * this.height + , n = Math.sin(t) * i + , s = Math.cos(t) * o; + return i * o / Math.sqrt(n * n + s * s) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + if (void 0 === this.width) { + var t = 5 + , i = { + width: Number(this.options.icon.size), + height: Number(this.options.icon.size) + }; + this.width = i.width + 2 * t, + this.height = i.height + 2 * t, + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + if (this.resize(e), + this.options.icon.size = this.options.icon.size || 50, + this.left = t - .5 * this.width, + this.top = i - .5 * this.height, + this._icon(e, t, i, o), + void 0 !== this.options.label) { + var s = 5; + this.labelModule.draw(e, t, i + .5 * this.height + s, o) + } + this.updateBoundingBox(t, i) + } + }, { + key: "updateBoundingBox", + value: function(e, t) { + if (this.boundingBox.top = t - .5 * this.options.icon.size, + this.boundingBox.left = e - .5 * this.options.icon.size, + this.boundingBox.right = e + .5 * this.options.icon.size, + this.boundingBox.bottom = t + .5 * this.options.icon.size, + void 0 !== this.options.label && this.labelModule.size.width > 0) { + var i = 5; + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + i) + } + } + }, { + key: "_icon", + value: function(e, t, i, o) { + var n = Number(this.options.icon.size); + void 0 !== this.options.icon.code ? (e.font = (o ? "bold " : "") + n + "px " + this.options.icon.face, + e.fillStyle = this.options.icon.color || "black", + e.textAlign = "center", + e.textBaseline = "middle", + this.enableShadow(e), + e.fillText(this.options.icon.code, t, i), + this.disableShadow(e)) : console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.") + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(20) + , d = o(h) + , l = function(e) { + function t(e, i, o, r) { + n(this, t); + var a = s(this, Object.getPrototypeOf(t).call(this, e, i, o)); + return a.imageObj = r, + a + } + return r(t, e), + a(t, [{ + key: "resize", + value: function() { + this._resizeImage() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + if (this.resize(), + this.left = t - this.width / 2, + this.top = i - this.height / 2, + this.options.shapeProperties.useBorderWithImage === !0) { + var s = this.options.borderWidth + , r = this.options.borderWidthSelected || 2 * this.options.borderWidth + , a = (o ? r : s) / this.body.view.scale; + e.lineWidth = Math.min(this.width, a), + e.beginPath(), + e.strokeStyle = o ? this.options.color.highlight.border : n ? this.options.color.hover.border : this.options.color.border, + e.fillStyle = o ? this.options.color.highlight.background : n ? this.options.color.hover.background : this.options.color.background, + e.rect(this.left - .5 * e.lineWidth, this.top - .5 * e.lineWidth, this.width + e.lineWidth, this.height + e.lineWidth), + e.fill(), + e.save(), + a > 0 && (this.enableBorderDashes(e), + e.stroke(), + this.disableBorderDashes(e)), + e.restore(), + e.closePath() + } + this._drawImageAtPosition(e), + this._drawImageLabel(e, t, i, o || n), + this.updateBoundingBox(t, i) + } + }, { + key: "updateBoundingBox", + value: function(e, t) { + this.resize(), + this.left = e - this.width / 2, + this.top = t - this.height / 2, + this.boundingBox.top = this.top, + this.boundingBox.left = this.left, + this.boundingBox.right = this.left + this.width, + this.boundingBox.bottom = this.top + this.height, + void 0 !== this.options.label && this.labelModule.size.width > 0 && (this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset)) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function() { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "square", 2, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "star", 4, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(18) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e, t) { + if (void 0 === this.width) { + var i = 5 + , o = this.labelModule.getTextSize(e, t); + this.width = o.width + 2 * i, + this.height = o.height + 2 * i, + this.radius = .5 * this.width + } + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this.resize(e, o || n), + this.left = t - this.width / 2, + this.top = i - this.height / 2, + this.enableShadow(e), + this.labelModule.draw(e, t, i, o || n), + this.disableShadow(e), + this.updateBoundingBox(t, i, e, o) + } + }, { + key: "updateBoundingBox", + value: function(e, t, i, o) { + this.resize(i, o), + this.left = e - this.width / 2, + this.top = t - this.height / 2, + this.boundingBox.top = this.top, + this.boundingBox.left = this.left, + this.boundingBox.right = this.left + this.width, + this.boundingBox.bottom = this.top + this.height + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "triangle", 3, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(24) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "resize", + value: function(e) { + this._resizeShape() + } + }, { + key: "draw", + value: function(e, t, i, o, n) { + this._drawShape(e, "triangleDown", 3, t, i, o, n) + } + }, { + key: "distanceToBorder", + value: function(e, t) { + return this._distanceToBorder(e, t) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(1) + , a = !1 + , h = void 0 + , d = "background: #FFeeee; color: #dd0000" + , l = function() { + function e() { + o(this, e) + } + return s(e, null, [{ + key: "validate", + value: function(t, i, o) { + a = !1, + h = i; + var n = i; + return void 0 !== o && (n = i[o]), + e.parse(t, n, []), + a + } + }, { + key: "parse", + value: function(t, i, o) { + for (var n in t) + t.hasOwnProperty(n) && e.check(n, t, i, o) + } + }, { + key: "check", + value: function(t, i, o, n) { + void 0 === o[t] && void 0 === o.__any__ ? e.getSuggestion(t, o, n) : void 0 === o[t] && void 0 !== o.__any__ ? "object" === e.getType(i[t]) && void 0 !== o.__any__.__type__ ? e.checkFields(t, i, o, "__any__", o.__any__.__type__, n) : e.checkFields(t, i, o, "__any__", o.__any__, n) : void 0 !== o[t].__type__ ? e.checkFields(t, i, o, t, o[t].__type__, n) : e.checkFields(t, i, o, t, o[t], n) + } + }, { + key: "checkFields", + value: function(t, i, o, n, s, h) { + var l = e.getType(i[t]) + , c = s[l]; + void 0 !== c ? "array" === e.getType(c) && -1 === c.indexOf(i[t]) ? (console.log('%cInvalid option detected in "' + t + '". Allowed values are:' + e.print(c) + ' not "' + i[t] + '". ' + e.printLocation(h, t), d), + a = !0) : "object" === l && "__any__" !== n && (h = r.copyAndExtendArray(h, t), + e.parse(i[t], o[n], h)) : void 0 === s.any && (console.log('%cInvalid type received for "' + t + '". Expected: ' + e.print(Object.keys(s)) + ". Received [" + l + '] "' + i[t] + '"' + e.printLocation(h, t), d), + a = !0) + } + }, { + key: "getType", + value: function(e) { + var t = "undefined" == typeof e ? "undefined" : n(e); + return "object" === t ? null === e ? "null" : e instanceof Boolean ? "boolean" : e instanceof Number ? "number" : e instanceof String ? "string" : Array.isArray(e) ? "array" : e instanceof Date ? "date" : void 0 !== e.nodeType ? "dom" : e._isAMomentObject === !0 ? "moment" : "object" : "number" === t ? "number" : "boolean" === t ? "boolean" : "string" === t ? "string" : void 0 === t ? "undefined" : t + } + }, { + key: "getSuggestion", + value: function(t, i, o) { + var n = e.findInOptions(t, i, o, !1) + , s = e.findInOptions(t, h, [], !0) + , r = 8 + , l = 4; + void 0 !== n.indexMatch ? console.log('%cUnknown option detected: "' + t + '" in ' + e.printLocation(n.path, t, "") + 'Perhaps it was incomplete? Did you mean: "' + n.indexMatch + '"?\n\n', d) : s.distance <= l && n.distance > s.distance ? console.log('%cUnknown option detected: "' + t + '" in ' + e.printLocation(n.path, t, "") + "Perhaps it was misplaced? Matching option found at: " + e.printLocation(s.path, s.closestMatch, ""), d) : n.distance <= r ? console.log('%cUnknown option detected: "' + t + '". Did you mean "' + n.closestMatch + '"?' + e.printLocation(n.path, t), d) : console.log('%cUnknown option detected: "' + t + '". Did you mean one of these: ' + e.print(Object.keys(i)) + e.printLocation(o, t), d), + a = !0 + } + }, { + key: "findInOptions", + value: function(t, i, o) { + var n = arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3] + , s = 1e9 + , a = "" + , h = [] + , d = t.toLowerCase() + , l = void 0; + for (var c in i) { + var u = void 0; + if (void 0 !== i[c].__type__ && n === !0) { + var f = e.findInOptions(t, i[c], r.copyAndExtendArray(o, c)); + s > f.distance && (a = f.closestMatch, + h = f.path, + s = f.distance, + l = f.indexMatch) + } else + -1 !== c.toLowerCase().indexOf(d) && (l = c), + u = e.levenshteinDistance(t, c), + s > u && (a = c, + h = r.copyArray(o), + s = u) + } + return { + closestMatch: a, + path: h, + distance: s, + indexMatch: l + } + } + }, { + key: "printLocation", + value: function(e, t) { + for (var i = arguments.length <= 2 || void 0 === arguments[2] ? "Problem value found at: \n" : arguments[2], o = "\n\n" + i + "options = {\n", n = 0; n < e.length; n++) { + for (var s = 0; n + 1 > s; s++) + o += " "; + o += e[n] + ": {\n" + } + for (var r = 0; r < e.length + 1; r++) + o += " "; + o += t + "\n"; + for (var a = 0; a < e.length + 1; a++) { + for (var h = 0; h < e.length - a; h++) + o += " "; + o += "}\n" + } + return o + "\n\n" + } + }, { + key: "print", + value: function(e) { + return JSON.stringify(e).replace(/(\")|(\[)|(\])|(,"__type__")/g, "").replace(/(\,)/g, ", ") + } + }, { + key: "levenshteinDistance", + value: function(e, t) { + if (0 === e.length) + return t.length; + if (0 === t.length) + return e.length; + var i, o = []; + for (i = 0; i <= t.length; i++) + o[i] = [i]; + var n; + for (n = 0; n <= e.length; n++) + o[0][n] = n; + for (i = 1; i <= t.length; i++) + for (n = 1; n <= e.length; n++) + t.charAt(i - 1) == e.charAt(n - 1) ? o[i][n] = o[i - 1][n - 1] : o[i][n] = Math.min(o[i - 1][n - 1] + 1, Math.min(o[i][n - 1] + 1, o[i - 1][n] + 1)); + return o[t.length][e.length] + } + }]), + e + }(); + t["default"] = l, + t.printStyle = d + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(36) + , a = o(r) + , h = i(16) + , d = o(h) + , l = i(1) + , c = i(8) + , u = i(10) + , f = function() { + function e(t, i, o) { + var s = this; + n(this, e), + this.body = t, + this.images = i, + this.groups = o, + this.body.functions.createEdge = this.create.bind(this), + this.edgesListeners = { + add: function(e, t) { + s.add(t.items) + }, + update: function(e, t) { + s.update(t.items) + }, + remove: function(e, t) { + s.remove(t.items) + } + }, + this.options = {}, + this.defaultOptions = { + arrows: { + to: { + enabled: !1, + scaleFactor: 1 + }, + middle: { + enabled: !1, + scaleFactor: 1 + }, + from: { + enabled: !1, + scaleFactor: 1 + } + }, + arrowStrikethrough: !0, + color: { + color: "#848484", + highlight: "#848484", + hover: "#848484", + inherit: "from", + opacity: 1 + }, + dashes: !1, + font: { + color: "#343434", + size: 14, + face: "arial", + background: "none", + strokeWidth: 2, + strokeColor: "#ffffff", + align: "horizontal" + }, + hidden: !1, + hoverWidth: 1.5, + label: void 0, + labelHighlightBold: !0, + length: void 0, + physics: !0, + scaling: { + min: 1, + max: 15, + label: { + enabled: !0, + min: 14, + max: 30, + maxVisible: 30, + drawThreshold: 5 + }, + customScalingFunction: function(e, t, i, o) { + if (t === e) + return .5; + var n = 1 / (t - e); + return Math.max(0, (o - e) * n) + } + }, + selectionWidth: 1.5, + selfReferenceSize: 20, + shadow: { + enabled: !1, + color: "rgba(0,0,0,0.5)", + size: 10, + x: 5, + y: 5 + }, + smooth: { + enabled: !0, + type: "dynamic", + forceDirection: "none", + roundness: .5 + }, + title: void 0, + width: 1, + value: void 0 + }, + l.extend(this.options, this.defaultOptions), + this.bindEventListeners() + } + return s(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("_forceDisableDynamicCurves", function(t) { + "dynamic" === t && (t = "continuous"); + var i = !1; + for (var o in e.body.edges) + if (e.body.edges.hasOwnProperty(o)) { + var n = e.body.edges[o] + , s = e.body.data.edges._data[o]; + if (void 0 !== s) { + var r = s.smooth; + void 0 !== r && r.enabled === !0 && "dynamic" === r.type && (void 0 === t ? n.setOptions({ + smooth: !1 + }) : n.setOptions({ + smooth: { + type: t + } + }), + i = !0) + } + } + i === !0 && e.body.emitter.emit("_dataChanged") + }), + this.body.emitter.on("_dataUpdated", function() { + e.reconnectEdges(), + e.markAllEdgesAsDirty() + }), + this.body.emitter.on("refreshEdges", this.refresh.bind(this)), + this.body.emitter.on("refresh", this.refresh.bind(this)), + this.body.emitter.on("destroy", function() { + l.forEach(e.edgesListeners, function(t, i) { + e.body.data.edges && e.body.data.edges.off(i, t) + }), + delete e.body.functions.createEdge, + delete e.edgesListeners.add, + delete e.edgesListeners.update, + delete e.edgesListeners.remove, + delete e.edgesListeners + }) + } + }, { + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + a["default"].parseOptions(this.options, e), + void 0 !== e.color && this.markAllEdgesAsDirty(); + var t = !1; + if (void 0 !== e.smooth) + for (var i in this.body.edges) + this.body.edges.hasOwnProperty(i) && (t = this.body.edges[i].updateEdgeType() || t); + if (void 0 !== e.font) { + d["default"].parseOptions(this.options.font, e); + for (var o in this.body.edges) + this.body.edges.hasOwnProperty(o) && this.body.edges[o].updateLabelModule() + } + void 0 === e.hidden && void 0 === e.physics && t !== !0 || this.body.emitter.emit("_dataChanged") + } + } + }, { + key: "setData", + value: function(e) { + var t = this + , i = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1] + , o = this.body.data.edges; + if (e instanceof c || e instanceof u) + this.body.data.edges = e; + else if (Array.isArray(e)) + this.body.data.edges = new c, + this.body.data.edges.add(e); + else { + if (e) + throw new TypeError("Array or DataSet expected"); + this.body.data.edges = new c + } + if (o && l.forEach(this.edgesListeners, function(e, t) { + o.off(t, e) + }), + this.body.edges = {}, + this.body.data.edges) { + l.forEach(this.edgesListeners, function(e, i) { + t.body.data.edges.on(i, e) + }); + var n = this.body.data.edges.getIds(); + this.add(n, !0) + } + i === !1 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "add", + value: function(e) { + for (var t = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1], i = this.body.edges, o = this.body.data.edges, n = 0; n < e.length; n++) { + var s = e[n] + , r = i[s]; + r && r.disconnect(); + var a = o.get(s, { + showInternalIds: !0 + }); + i[s] = this.create(a) + } + t === !1 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "update", + value: function(e) { + for (var t = this.body.edges, i = this.body.data.edges, o = !1, n = 0; n < e.length; n++) { + var s = e[n] + , r = i.get(s) + , a = t[s]; + void 0 !== a ? (a.disconnect(), + o = a.setOptions(r) || o, + a.connect()) : (this.body.edges[s] = this.create(r), + o = !0) + } + o === !0 ? this.body.emitter.emit("_dataChanged") : this.body.emitter.emit("_dataUpdated") + } + }, { + key: "remove", + value: function(e) { + for (var t = this.body.edges, i = 0; i < e.length; i++) { + var o = e[i] + , n = t[o]; + void 0 !== n && (n.cleanup(), + n.disconnect(), + delete t[o]) + } + this.body.emitter.emit("_dataChanged") + } + }, { + key: "refresh", + value: function() { + var e = this.body.edges; + for (var t in e) { + var i = void 0; + e.hasOwnProperty(t) && (i = e[t]); + var o = this.body.data.edges._data[t]; + void 0 !== i && void 0 !== o && i.setOptions(o) + } + } + }, { + key: "create", + value: function(e) { + return new a["default"](e,this.body,this.options) + } + }, { + key: "markAllEdgesAsDirty", + value: function() { + for (var e in this.body.edges) + this.body.edges[e].edgeType.colorDirty = !0 + } + }, { + key: "reconnectEdges", + value: function() { + var e, t = this.body.nodes, i = this.body.edges; + for (e in t) + t.hasOwnProperty(e) && (t[e].edges = []); + for (e in i) + if (i.hasOwnProperty(e)) { + var o = i[e]; + o.from = null, + o.to = null, + o.connect() + } + } + }, { + key: "getConnectedNodes", + value: function(e) { + var t = []; + if (void 0 !== this.body.edges[e]) { + var i = this.body.edges[e]; + i.fromId && t.push(i.fromId), + i.toId && t.push(i.toId) + } + return t + } + }]), + e + }(); + t["default"] = f + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , r = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , a = i(16) + , h = o(a) + , d = i(37) + , l = o(d) + , c = i(41) + , u = o(c) + , f = i(42) + , p = o(f) + , v = i(43) + , y = o(v) + , g = i(1) + , b = function() { + function e(t, i, o) { + if (n(this, e), + void 0 === i) + throw "No body provided"; + this.options = g.bridgeObject(o), + this.globalOptions = o, + this.body = i, + this.id = void 0, + this.fromId = void 0, + this.toId = void 0, + this.selected = !1, + this.hover = !1, + this.labelDirty = !0, + this.colorDirty = !0, + this.baseWidth = this.options.width, + this.baseFontSize = this.options.font.size, + this.from = void 0, + this.to = void 0, + this.edgeType = void 0, + this.connected = !1, + this.labelModule = new h["default"](this.body,this.options,!0), + this.setOptions(t) + } + return r(e, [{ + key: "setOptions", + value: function(t) { + if (t) { + this.colorDirty = !0, + e.parseOptions(this.options, t, !0, this.globalOptions), + void 0 !== t.id && (this.id = t.id), + void 0 !== t.from && (this.fromId = t.from), + void 0 !== t.to && (this.toId = t.to), + void 0 !== t.title && (this.title = t.title), + void 0 !== t.value && (t.value = parseFloat(t.value)), + this.updateLabelModule(); + var i = this.updateEdgeType(); + return this._setInteractionWidths(), + this.connect(), + void 0 === t.hidden && void 0 === t.physics || (i = !0), + i + } + } + }, { + key: "updateLabelModule", + value: function() { + this.labelModule.setOptions(this.options, !0), + void 0 !== this.labelModule.baseSize && (this.baseFontSize = this.labelModule.baseSize) + } + }, { + key: "updateEdgeType", + value: function() { + var e = !1 + , t = !0 + , i = this.options.smooth; + return void 0 !== this.edgeType && (this.edgeType instanceof u["default"] && i.enabled === !0 && "dynamic" === i.type && (t = !1), + this.edgeType instanceof l["default"] && i.enabled === !0 && "cubicBezier" === i.type && (t = !1), + this.edgeType instanceof p["default"] && i.enabled === !0 && "dynamic" !== i.type && "cubicBezier" !== i.type && (t = !1), + this.edgeType instanceof y["default"] && i.enabled === !1 && (t = !1), + t === !0 && (e = this.cleanup())), + t === !0 ? this.options.smooth.enabled === !0 ? "dynamic" === this.options.smooth.type ? (e = !0, + this.edgeType = new u["default"](this.options,this.body,this.labelModule)) : "cubicBezier" === this.options.smooth.type ? this.edgeType = new l["default"](this.options,this.body,this.labelModule) : this.edgeType = new p["default"](this.options,this.body,this.labelModule) : this.edgeType = new y["default"](this.options,this.body,this.labelModule) : this.edgeType.setOptions(this.options), + e + } + }, { + key: "connect", + value: function() { + this.disconnect(), + this.from = this.body.nodes[this.fromId] || void 0, + this.to = this.body.nodes[this.toId] || void 0, + this.connected = void 0 !== this.from && void 0 !== this.to, + this.connected === !0 ? (this.from.attachEdge(this), + this.to.attachEdge(this)) : (this.from && this.from.detachEdge(this), + this.to && this.to.detachEdge(this)), + this.edgeType.connect() + } + }, { + key: "disconnect", + value: function() { + this.from && (this.from.detachEdge(this), + this.from = void 0), + this.to && (this.to.detachEdge(this), + this.to = void 0), + this.connected = !1 + } + }, { + key: "getTitle", + value: function() { + return this.title + } + }, { + key: "isSelected", + value: function() { + return this.selected + } + }, { + key: "getValue", + value: function() { + return this.options.value + } + }, { + key: "setValueRange", + value: function(e, t, i) { + if (void 0 !== this.options.value) { + var o = this.options.scaling.customScalingFunction(e, t, i, this.options.value) + , n = this.options.scaling.max - this.options.scaling.min; + if (this.options.scaling.label.enabled === !0) { + var s = this.options.scaling.label.max - this.options.scaling.label.min; + this.options.font.size = this.options.scaling.label.min + o * s + } + this.options.width = this.options.scaling.min + o * n + } else + this.options.width = this.baseWidth, + this.options.font.size = this.baseFontSize; + this._setInteractionWidths(), + this.updateLabelModule() + } + }, { + key: "_setInteractionWidths", + value: function() { + "function" == typeof this.options.hoverWidth ? this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width) : this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width, + "function" == typeof this.options.selectionWidth ? this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width) : this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width + } + }, { + key: "draw", + value: function(e) { + var t = this.edgeType.getViaNode() + , i = {}; + this.edgeType.fromPoint = this.edgeType.from, + this.edgeType.toPoint = this.edgeType.to, + this.options.arrows.from.enabled === !0 && (i.from = this.edgeType.getArrowData(e, "from", t, this.selected, this.hover), + this.options.arrowStrikethrough === !1 && (this.edgeType.fromPoint = i.from.core)), + this.options.arrows.to.enabled === !0 && (i.to = this.edgeType.getArrowData(e, "to", t, this.selected, this.hover), + this.options.arrowStrikethrough === !1 && (this.edgeType.toPoint = i.to.core)), + this.options.arrows.middle.enabled === !0 && (i.middle = this.edgeType.getArrowData(e, "middle", t, this.selected, this.hover)), + this.edgeType.drawLine(e, this.selected, this.hover, t), + this.drawArrows(e, i), + this.drawLabel(e, t) + } + }, { + key: "drawArrows", + value: function(e, t) { + this.options.arrows.from.enabled === !0 && this.edgeType.drawArrowHead(e, this.selected, this.hover, t.from), + this.options.arrows.middle.enabled === !0 && this.edgeType.drawArrowHead(e, this.selected, this.hover, t.middle), + this.options.arrows.to.enabled === !0 && this.edgeType.drawArrowHead(e, this.selected, this.hover, t.to) + } + }, { + key: "drawLabel", + value: function(e, t) { + if (void 0 !== this.options.label) { + var i = this.from + , o = this.to + , n = this.from.selected || this.to.selected || this.selected; + if (i.id != o.id) { + this.labelModule.pointToSelf = !1; + var s = this.edgeType.getPoint(.5, t); + e.save(), + "horizontal" !== this.options.font.align && (this.labelModule.calculateLabelSize(e, n, s.x, s.y), + e.translate(s.x, this.labelModule.size.yLine), + this._rotateForLabelAlignment(e)), + this.labelModule.draw(e, s.x, s.y, n), + e.restore() + } else { + this.labelModule.pointToSelf = !0; + var r, a, h = this.options.selfReferenceSize; + i.shape.width > i.shape.height ? (r = i.x + .5 * i.shape.width, + a = i.y - h) : (r = i.x + h, + a = i.y - .5 * i.shape.height), + s = this._pointOnCircle(r, a, h, .125), + this.labelModule.draw(e, s.x, s.y, n) + } + } + } + }, { + key: "isOverlappingWith", + value: function(e) { + if (this.connected) { + var t = 10 + , i = this.from.x + , o = this.from.y + , n = this.to.x + , s = this.to.y + , r = e.left + , a = e.top + , h = this.edgeType.getDistanceToEdge(i, o, n, s, r, a); + return t > h + } + return !1 + } + }, { + key: "_rotateForLabelAlignment", + value: function(e) { + var t = this.from.y - this.to.y + , i = this.from.x - this.to.x + , o = Math.atan2(t, i); + (-1 > o && 0 > i || o > 0 && 0 > i) && (o += Math.PI), + e.rotate(o) + } + }, { + key: "_pointOnCircle", + value: function(e, t, i, o) { + var n = 2 * o * Math.PI; + return { + x: e + i * Math.cos(n), + y: t - i * Math.sin(n) + } + } + }, { + key: "select", + value: function() { + this.selected = !0 + } + }, { + key: "unselect", + value: function() { + this.selected = !1 + } + }, { + key: "cleanup", + value: function() { + return this.edgeType.cleanup() + } + }], [{ + key: "parseOptions", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = arguments.length <= 3 || void 0 === arguments[3] ? {} : arguments[3] + , n = ["arrowStrikethrough", "id", "from", "hidden", "hoverWidth", "label", "labelHighlightBold", "length", "line", "opacity", "physics", "scaling", "selectionWidth", "selfReferenceSize", "to", "title", "value", "width"]; + if (g.selectiveDeepExtend(n, e, t, i), + g.mergeOptions(e, t, "smooth", i, o), + g.mergeOptions(e, t, "shadow", i, o), + void 0 !== t.dashes && null !== t.dashes ? e.dashes = t.dashes : i === !0 && null === t.dashes && (e.dashes = Object.create(o.dashes)), + void 0 !== t.scaling && null !== t.scaling ? (void 0 !== t.scaling.min && (e.scaling.min = t.scaling.min), + void 0 !== t.scaling.max && (e.scaling.max = t.scaling.max), + g.mergeOptions(e.scaling, t.scaling, "label", i, o.scaling)) : i === !0 && null === t.scaling && (e.scaling = Object.create(o.scaling)), + void 0 !== t.arrows && null !== t.arrows) + if ("string" == typeof t.arrows) { + var r = t.arrows.toLowerCase(); + e.arrows.to.enabled = -1 != r.indexOf("to"), + e.arrows.middle.enabled = -1 != r.indexOf("middle"), + e.arrows.from.enabled = -1 != r.indexOf("from") + } else { + if ("object" !== s(t.arrows)) + throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:" + JSON.stringify(t.arrows)); + g.mergeOptions(e.arrows, t.arrows, "to", i, o.arrows), + g.mergeOptions(e.arrows, t.arrows, "middle", i, o.arrows), + g.mergeOptions(e.arrows, t.arrows, "from", i, o.arrows) + } + else + i === !0 && null === t.arrows && (e.arrows = Object.create(o.arrows)); + if (void 0 !== t.color && null !== t.color) + if (e.color = g.deepExtend({}, e.color, !0), + g.isString(t.color)) + e.color.color = t.color, + e.color.highlight = t.color, + e.color.hover = t.color, + e.color.inherit = !1; + else { + var a = !1; + void 0 !== t.color.color && (e.color.color = t.color.color, + a = !0), + void 0 !== t.color.highlight && (e.color.highlight = t.color.highlight, + a = !0), + void 0 !== t.color.hover && (e.color.hover = t.color.hover, + a = !0), + void 0 !== t.color.inherit && (e.color.inherit = t.color.inherit), + void 0 !== t.color.opacity && (e.color.opacity = Math.min(1, Math.max(0, t.color.opacity))), + void 0 === t.color.inherit && a === !0 && (e.color.inherit = !1) + } + else + i === !0 && null === t.color && (e.color = g.bridgeObject(o.color)); + void 0 !== t.font && null !== t.font ? h["default"].parseOptions(e.font, t) : i === !0 && null === t.font && (e.font = g.bridgeObject(o.font)) + } + }]), + e + }(); + t["default"] = b + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + var i = [] + , o = !0 + , n = !1 + , s = void 0; + try { + for (var r, a = e[Symbol.iterator](); !(o = (r = a.next()).done) && (i.push(r.value), + !t || i.length !== t); o = !0) + ; + } catch (h) { + n = !0, + s = h + } finally { + try { + !o && a["return"] && a["return"]() + } finally { + if (n) + throw s + } + } + return i + } + return function(t, i) { + if (Array.isArray(t)) + return t; + if (Symbol.iterator in Object(t)) + return e(t, i); + throw new TypeError("Invalid attempt to destructure non-iterable instance") + } + }() + , h = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , d = i(38) + , l = o(d) + , c = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + h(t, [{ + key: "_line", + value: function(e, t) { + var i = t[0] + , o = t[1]; + e.beginPath(), + e.moveTo(this.fromPoint.x, this.fromPoint.y), + void 0 === t || void 0 === i.x ? e.lineTo(this.toPoint.x, this.toPoint.y) : e.bezierCurveTo(i.x, i.y, o.x, o.y, this.toPoint.x, this.toPoint.y), + this.enableShadow(e), + e.stroke(), + this.disableShadow(e) + } + }, { + key: "_getViaCoordinates", + value: function() { + var e = this.from.x - this.to.x + , t = this.from.y - this.to.y + , i = void 0 + , o = void 0 + , n = void 0 + , s = void 0 + , r = this.options.smooth.roundness; + return (Math.abs(e) > Math.abs(t) || this.options.smooth.forceDirection === !0 || "horizontal" === this.options.smooth.forceDirection) && "vertical" !== this.options.smooth.forceDirection ? (o = this.from.y, + s = this.to.y, + i = this.from.x - r * e, + n = this.to.x + r * e) : (o = this.from.y - r * t, + s = this.to.y + r * t, + i = this.from.x, + n = this.to.x), + [{ + x: i, + y: o + }, { + x: n, + y: s + }] + } + }, { + key: "getViaNode", + value: function() { + return this._getViaCoordinates() + } + }, { + key: "_findBorderPosition", + value: function(e, t) { + return this._findBorderPositionBezier(e, t) + } + }, { + key: "_getDistanceToEdge", + value: function(e, t, i, o, n, s) { + var r = arguments.length <= 6 || void 0 === arguments[6] ? this._getViaCoordinates() : arguments[6] + , h = a(r, 2) + , d = h[0] + , l = h[1]; + return this._getDistanceToBezierEdge(e, t, i, o, n, s, d, l) + } + }, { + key: "getPoint", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? this._getViaCoordinates() : arguments[1] + , i = a(t, 2) + , o = i[0] + , n = i[1] + , s = e + , r = []; + r[0] = Math.pow(1 - s, 3), + r[1] = 3 * s * Math.pow(1 - s, 2), + r[2] = 3 * Math.pow(s, 2) * (1 - s), + r[3] = Math.pow(s, 3); + var h = r[0] * this.fromPoint.x + r[1] * o.x + r[2] * n.x + r[3] * this.toPoint.x + , d = r[0] * this.fromPoint.y + r[1] * o.y + r[2] * n.y + r[3] * this.toPoint.y; + return { + x: h, + y: d + } + } + }]), + t + }(l["default"]); + t["default"] = c + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(39) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_getDistanceToBezierEdge", + value: function(e, t, i, o, n, s, r, a) { + var h = 1e9 + , d = void 0 + , l = void 0 + , c = void 0 + , u = void 0 + , f = void 0 + , p = e + , v = t + , y = [0, 0, 0, 0]; + for (l = 1; 10 > l; l++) + c = .1 * l, + y[0] = Math.pow(1 - c, 3), + y[1] = 3 * c * Math.pow(1 - c, 2), + y[2] = 3 * Math.pow(c, 2) * (1 - c), + y[3] = Math.pow(c, 3), + u = y[0] * e + y[1] * r.x + y[2] * a.x + y[3] * i, + f = y[0] * t + y[1] * r.y + y[2] * a.y + y[3] * o, + l > 0 && (d = this._getDistanceToLine(p, v, u, f, n, s), + h = h > d ? d : h), + p = u, + v = f; + return h + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(40) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_findBorderPositionBezier", + value: function(e, t) { + var i, o, n, s, r, a = arguments.length <= 2 || void 0 === arguments[2] ? this._getViaCoordinates() : arguments[2], h = 10, d = 0, l = 0, c = 1, u = .2, f = this.to, p = !1; + for (e.id === this.from.id && (f = this.from, + p = !0); c >= l && h > d; ) { + var v = .5 * (l + c); + if (i = this.getPoint(v, a), + o = Math.atan2(f.y - i.y, f.x - i.x), + n = f.distanceToBorder(t, o), + s = Math.sqrt(Math.pow(i.x - f.x, 2) + Math.pow(i.y - f.y, 2)), + r = n - s, + Math.abs(r) < u) + break; + 0 > r ? p === !1 ? l = v : c = v : p === !1 ? c = v : l = v, + d++ + } + return i.t = v, + i + } + }, { + key: "_getDistanceToBezierEdge", + value: function(e, t, i, o, n, s, r) { + var a = 1e9 + , h = void 0 + , d = void 0 + , l = void 0 + , c = void 0 + , u = void 0 + , f = e + , p = t; + for (d = 1; 10 > d; d++) + l = .1 * d, + c = Math.pow(1 - l, 2) * e + 2 * l * (1 - l) * r.x + Math.pow(l, 2) * i, + u = Math.pow(1 - l, 2) * t + 2 * l * (1 - l) * r.y + Math.pow(l, 2) * o, + d > 0 && (h = this._getDistanceToLine(f, p, c, u, n, s), + a = a > h ? h : a), + f = c, + p = u; + return a + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + var i = [] + , o = !0 + , n = !1 + , s = void 0; + try { + for (var r, a = e[Symbol.iterator](); !(o = (r = a.next()).done) && (i.push(r.value), + !t || i.length !== t); o = !0) + ; + } catch (h) { + n = !0, + s = h + } finally { + try { + !o && a["return"] && a["return"]() + } finally { + if (n) + throw s + } + } + return i + } + return function(t, i) { + if (Array.isArray(t)) + return t; + if (Symbol.iterator in Object(t)) + return e(t, i); + throw new TypeError("Invalid attempt to destructure non-iterable instance") + } + }() + , s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(1) + , a = function() { + function e(t, i, n) { + o(this, e), + this.body = i, + this.labelModule = n, + this.options = {}, + this.setOptions(t), + this.colorDirty = !0, + this.color = {}, + this.selectionWidth = 2, + this.hoverWidth = 1.5, + this.fromPoint = this.from, + this.toPoint = this.to + } + return s(e, [{ + key: "connect", + value: function() { + this.from = this.body.nodes[this.options.from], + this.to = this.body.nodes[this.options.to] + } + }, { + key: "cleanup", + value: function() { + return !1 + } + }, { + key: "setOptions", + value: function(e) { + this.options = e, + this.from = this.body.nodes[this.options.from], + this.to = this.body.nodes[this.options.to], + this.id = this.options.id + } + }, { + key: "drawLine", + value: function(e, t, i, o) { + e.strokeStyle = this.getColor(e, t, i), + e.lineWidth = this.getLineWidth(t, i), + this.options.dashes !== !1 ? this._drawDashedLine(e, o) : this._drawLine(e, o) + } + }, { + key: "_drawLine", + value: function(e, t, i, o) { + if (this.from != this.to) + this._line(e, t, i, o); + else { + var s = this._getCircleData(e) + , r = n(s, 3) + , a = r[0] + , h = r[1] + , d = r[2]; + this._circle(e, a, h, d) + } + } + }, { + key: "_drawDashedLine", + value: function(e, t, i, o) { + e.lineCap = "round"; + var s = [5, 5]; + if (Array.isArray(this.options.dashes) === !0 && (s = this.options.dashes), + void 0 !== e.setLineDash) { + if (e.save(), + e.setLineDash(s), + e.lineDashOffset = 0, + this.from != this.to) + this._line(e, t); + else { + var r = this._getCircleData(e) + , a = n(r, 3) + , h = a[0] + , d = a[1] + , l = a[2]; + this._circle(e, h, d, l) + } + e.setLineDash([0]), + e.lineDashOffset = 0, + e.restore() + } else { + if (this.from != this.to) + e.dashedLine(this.from.x, this.from.y, this.to.x, this.to.y, s); + else { + var c = this._getCircleData(e) + , u = n(c, 3) + , f = u[0] + , p = u[1] + , v = u[2]; + this._circle(e, f, p, v) + } + this.enableShadow(e), + e.stroke(), + this.disableShadow(e) + } + } + }, { + key: "findBorderPosition", + value: function(e, t, i) { + return this.from != this.to ? this._findBorderPosition(e, t, i) : this._findBorderPositionCircle(e, t, i) + } + }, { + key: "findBorderPositions", + value: function(e) { + var t = {} + , i = {}; + if (this.from != this.to) + t = this._findBorderPosition(this.from, e), + i = this._findBorderPosition(this.to, e); + else { + var o = this._getCircleData(e) + , s = n(o, 3) + , r = s[0] + , a = s[1]; + s[2]; + t = this._findBorderPositionCircle(this.from, e, { + x: r, + y: a, + low: .25, + high: .6, + direction: -1 + }), + i = this._findBorderPositionCircle(this.from, e, { + x: r, + y: a, + low: .6, + high: .8, + direction: 1 + }) + } + return { + from: t, + to: i + } + } + }, { + key: "_getCircleData", + value: function(e) { + var t = void 0 + , i = void 0 + , o = this.from + , n = this.options.selfReferenceSize; + return void 0 !== e && void 0 === o.shape.width && o.shape.resize(e), + o.shape.width > o.shape.height ? (t = o.x + .5 * o.shape.width, + i = o.y - n) : (t = o.x + n, + i = o.y - .5 * o.shape.height), + [t, i, n] + } + }, { + key: "_pointOnCircle", + value: function(e, t, i, o) { + var n = 2 * o * Math.PI; + return { + x: e + i * Math.cos(n), + y: t - i * Math.sin(n) + } + } + }, { + key: "_findBorderPositionCircle", + value: function(e, t, i) { + for (var o = i.x, n = i.y, s = i.low, r = i.high, a = i.direction, h = 10, d = 0, l = this.options.selfReferenceSize, c = void 0, u = void 0, f = void 0, p = void 0, v = void 0, y = .05, g = .5 * (s + r); r >= s && h > d && (g = .5 * (s + r), + c = this._pointOnCircle(o, n, l, g), + u = Math.atan2(e.y - c.y, e.x - c.x), + f = e.distanceToBorder(t, u), + p = Math.sqrt(Math.pow(c.x - e.x, 2) + Math.pow(c.y - e.y, 2)), + v = f - p, + !(Math.abs(v) < y)); ) + v > 0 ? a > 0 ? s = g : r = g : a > 0 ? r = g : s = g, + d++; + return c.t = g, + c + } + }, { + key: "getLineWidth", + value: function(e, t) { + return e === !0 ? Math.max(this.selectionWidth, .3 / this.body.view.scale) : t === !0 ? Math.max(this.hoverWidth, .3 / this.body.view.scale) : Math.max(this.options.width, .3 / this.body.view.scale) + } + }, { + key: "getColor", + value: function(e, t, i) { + var o = this.options.color; + if (o.inherit !== !1) { + if ("both" === o.inherit && this.from.id !== this.to.id) { + var n = e.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y) + , s = void 0 + , a = void 0; + return s = this.from.options.color.highlight.border, + a = this.to.options.color.highlight.border, + this.from.selected === !1 && this.to.selected === !1 ? (s = r.overrideOpacity(this.from.options.color.border, this.options.color.opacity), + a = r.overrideOpacity(this.to.options.color.border, this.options.color.opacity)) : this.from.selected === !0 && this.to.selected === !1 ? a = this.to.options.color.border : this.from.selected === !1 && this.to.selected === !0 && (s = this.from.options.color.border), + n.addColorStop(0, s), + n.addColorStop(1, a), + n + } + this.colorDirty === !0 && ("to" === o.inherit ? (this.color.highlight = this.to.options.color.highlight.border, + this.color.hover = this.to.options.color.hover.border, + this.color.color = r.overrideOpacity(this.to.options.color.border, o.opacity)) : (this.color.highlight = this.from.options.color.highlight.border, + this.color.hover = this.from.options.color.hover.border, + this.color.color = r.overrideOpacity(this.from.options.color.border, o.opacity))) + } else + this.colorDirty === !0 && (this.color.highlight = o.highlight, + this.color.hover = o.hover, + this.color.color = r.overrideOpacity(o.color, o.opacity)); + return this.colorDirty = !1, + t === !0 ? this.color.highlight : i === !0 ? this.color.hover : this.color.color + } + }, { + key: "_circle", + value: function(e, t, i, o) { + this.enableShadow(e), + e.beginPath(), + e.arc(t, i, o, 0, 2 * Math.PI, !1), + e.stroke(), + this.disableShadow(e) + } + }, { + key: "getDistanceToEdge", + value: function(e, t, i, o, s, r, a) { + var h = 0; + if (this.from != this.to) + h = this._getDistanceToEdge(e, t, i, o, s, r, a); + else { + var d = this._getCircleData() + , l = n(d, 3) + , c = l[0] + , u = l[1] + , f = l[2] + , p = c - s + , v = u - r; + h = Math.abs(Math.sqrt(p * p + v * v) - f) + } + return this.labelModule.size.left < s && this.labelModule.size.left + this.labelModule.size.width > s && this.labelModule.size.top < r && this.labelModule.size.top + this.labelModule.size.height > r ? 0 : h + } + }, { + key: "_getDistanceToLine", + value: function(e, t, i, o, n, s) { + var r = i - e + , a = o - t + , h = r * r + a * a + , d = ((n - e) * r + (s - t) * a) / h; + d > 1 ? d = 1 : 0 > d && (d = 0); + var l = e + d * r + , c = t + d * a + , u = l - n + , f = c - s; + return Math.sqrt(u * u + f * f) + } + }, { + key: "getArrowData", + value: function(e, t, i, o, s) { + var r = void 0 + , a = void 0 + , h = void 0 + , d = void 0 + , l = void 0 + , c = void 0 + , u = this.getLineWidth(o, s); + if ("from" === t ? (h = this.from, + d = this.to, + l = .1, + c = this.options.arrows.from.scaleFactor) : "to" === t ? (h = this.to, + d = this.from, + l = -.1, + c = this.options.arrows.to.scaleFactor) : (h = this.to, + d = this.from, + c = this.options.arrows.middle.scaleFactor), + h != d) + if ("middle" !== t) + if (this.options.smooth.enabled === !0) { + a = this.findBorderPosition(h, e, { + via: i + }); + var f = this.getPoint(Math.max(0, Math.min(1, a.t + l)), i); + r = Math.atan2(a.y - f.y, a.x - f.x) + } else + r = Math.atan2(h.y - d.y, h.x - d.x), + a = this.findBorderPosition(h, e); + else + r = Math.atan2(h.y - d.y, h.x - d.x), + a = this.getPoint(.5, i); + else { + var p = this._getCircleData(e) + , v = n(p, 3) + , y = v[0] + , g = v[1] + , b = v[2]; + "from" === t ? (a = this.findBorderPosition(this.from, e, { + x: y, + y: g, + low: .25, + high: .6, + direction: -1 + }), + r = -2 * a.t * Math.PI + 1.5 * Math.PI + .1 * Math.PI) : "to" === t ? (a = this.findBorderPosition(this.from, e, { + x: y, + y: g, + low: .6, + high: 1, + direction: 1 + }), + r = -2 * a.t * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI) : (a = this._pointOnCircle(y, g, b, .175), + r = 3.9269908169872414) + } + var m = 15 * c + 3 * u + , _ = a.x - .9 * m * Math.cos(r) + , w = a.y - .9 * m * Math.sin(r) + , k = { + x: _, + y: w + }; + return { + point: a, + core: k, + angle: r, + length: m + } + } + }, { + key: "drawArrowHead", + value: function(e, t, i, o) { + e.strokeStyle = this.getColor(e, t, i), + e.fillStyle = e.strokeStyle, + e.lineWidth = this.getLineWidth(t, i), + e.arrow(o.point.x, o.point.y, o.angle, o.length), + this.enableShadow(e), + e.fill(), + this.disableShadow(e) + } + }, { + key: "enableShadow", + value: function(e) { + this.options.shadow.enabled === !0 && (e.shadowColor = this.options.shadow.color, + e.shadowBlur = this.options.shadow.size, + e.shadowOffsetX = this.options.shadow.x, + e.shadowOffsetY = this.options.shadow.y) + } + }, { + key: "disableShadow", + value: function(e) { + this.options.shadow.enabled === !0 && (e.shadowColor = "rgba(0,0,0,0)", + e.shadowBlur = 0, + e.shadowOffsetX = 0, + e.shadowOffsetY = 0) + } + }]), + e + }(); + t["default"] = a + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(39) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + n(this, t); + var r = s(this, Object.getPrototypeOf(t).call(this, e, i, o)); + return r._boundFunction = function() { + r.positionBezierNode() + } + , + r.body.emitter.on("_repositionBezierNodes", r._boundFunction), + r + } + return r(t, e), + a(t, [{ + key: "setOptions", + value: function(e) { + var t = !1; + this.options.physics !== e.physics && (t = !0), + this.options = e, + this.id = this.options.id, + this.from = this.body.nodes[this.options.from], + this.to = this.body.nodes[this.options.to], + this.setupSupportNode(), + this.connect(), + t === !0 && (this.via.setOptions({ + physics: this.options.physics + }), + this.positionBezierNode()) + } + }, { + key: "connect", + value: function() { + this.from = this.body.nodes[this.options.from], + this.to = this.body.nodes[this.options.to], + void 0 === this.from || void 0 === this.to || this.options.physics === !1 ? this.via.setOptions({ + physics: !1 + }) : this.from.id === this.to.id ? this.via.setOptions({ + physics: !1 + }) : this.via.setOptions({ + physics: !0 + }) + } + }, { + key: "cleanup", + value: function() { + return this.body.emitter.off("_repositionBezierNodes", this._boundFunction), + void 0 !== this.via ? (delete this.body.nodes[this.via.id], + this.via = void 0, + !0) : !1 + } + }, { + key: "setupSupportNode", + value: function() { + if (void 0 === this.via) { + var e = "edgeId:" + this.id + , t = this.body.functions.createNode({ + id: e, + shape: "circle", + physics: !0, + hidden: !0 + }); + this.body.nodes[e] = t, + this.via = t, + this.via.parentEdgeId = this.id, + this.positionBezierNode() + } + } + }, { + key: "positionBezierNode", + value: function() { + void 0 !== this.via && void 0 !== this.from && void 0 !== this.to ? (this.via.x = .5 * (this.from.x + this.to.x), + this.via.y = .5 * (this.from.y + this.to.y)) : void 0 !== this.via && (this.via.x = 0, + this.via.y = 0) + } + }, { + key: "_line", + value: function(e, t) { + e.beginPath(), + e.moveTo(this.fromPoint.x, this.fromPoint.y), + void 0 === t.x ? e.lineTo(this.toPoint.x, this.toPoint.y) : e.quadraticCurveTo(t.x, t.y, this.toPoint.x, this.toPoint.y), + this.enableShadow(e), + e.stroke(), + this.disableShadow(e) + } + }, { + key: "getViaNode", + value: function() { + return this.via + } + }, { + key: "getPoint", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? this.via : arguments[1] + , i = e + , o = Math.pow(1 - i, 2) * this.fromPoint.x + 2 * i * (1 - i) * t.x + Math.pow(i, 2) * this.toPoint.x + , n = Math.pow(1 - i, 2) * this.fromPoint.y + 2 * i * (1 - i) * t.y + Math.pow(i, 2) * this.toPoint.y; + return { + x: o, + y: n + } + } + }, { + key: "_findBorderPosition", + value: function(e, t) { + return this._findBorderPositionBezier(e, t, this.via) + } + }, { + key: "_getDistanceToEdge", + value: function(e, t, i, o, n, s) { + return this._getDistanceToBezierEdge(e, t, i, o, n, s, this.via) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(39) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_line", + value: function(e, t) { + e.beginPath(), + e.moveTo(this.fromPoint.x, this.fromPoint.y), + void 0 === t.x ? e.lineTo(this.toPoint.x, this.toPoint.y) : e.quadraticCurveTo(t.x, t.y, this.toPoint.x, this.toPoint.y), + this.enableShadow(e), + e.stroke(), + this.disableShadow(e) + } + }, { + key: "getViaNode", + value: function() { + return this._getViaCoordinates() + } + }, { + key: "_getViaCoordinates", + value: function() { + var e = void 0 + , t = void 0 + , i = this.options.smooth.roundness + , o = this.options.smooth.type + , n = Math.abs(this.from.x - this.to.x) + , s = Math.abs(this.from.y - this.to.y); + if ("discrete" === o || "diagonalCross" === o) + Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y) ? (this.from.y >= this.to.y ? this.from.x <= this.to.x ? (e = this.from.x + i * s, + t = this.from.y - i * s) : this.from.x > this.to.x && (e = this.from.x - i * s, + t = this.from.y - i * s) : this.from.y < this.to.y && (this.from.x <= this.to.x ? (e = this.from.x + i * s, + t = this.from.y + i * s) : this.from.x > this.to.x && (e = this.from.x - i * s, + t = this.from.y + i * s)), + "discrete" === o && (e = i * s > n ? this.from.x : e)) : Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y) && (this.from.y >= this.to.y ? this.from.x <= this.to.x ? (e = this.from.x + i * n, + t = this.from.y - i * n) : this.from.x > this.to.x && (e = this.from.x - i * n, + t = this.from.y - i * n) : this.from.y < this.to.y && (this.from.x <= this.to.x ? (e = this.from.x + i * n, + t = this.from.y + i * n) : this.from.x > this.to.x && (e = this.from.x - i * n, + t = this.from.y + i * n)), + "discrete" === o && (t = i * n > s ? this.from.y : t)); + else if ("straightCross" === o) + Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y) ? (e = this.from.x, + t = this.from.y < this.to.y ? this.to.y - (1 - i) * s : this.to.y + (1 - i) * s) : Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y) && (e = this.from.x < this.to.x ? this.to.x - (1 - i) * n : this.to.x + (1 - i) * n, + t = this.from.y); + else if ("horizontal" === o) + e = this.from.x < this.to.x ? this.to.x - (1 - i) * n : this.to.x + (1 - i) * n, + t = this.from.y; + else if ("vertical" === o) + e = this.from.x, + t = this.from.y < this.to.y ? this.to.y - (1 - i) * s : this.to.y + (1 - i) * s; + else if ("curvedCW" === o) { + n = this.to.x - this.from.x, + s = this.from.y - this.to.y; + var r = Math.sqrt(n * n + s * s) + , a = Math.PI + , h = Math.atan2(s, n) + , d = (h + (.5 * i + .5) * a) % (2 * a); + e = this.from.x + (.5 * i + .5) * r * Math.sin(d), + t = this.from.y + (.5 * i + .5) * r * Math.cos(d) + } else if ("curvedCCW" === o) { + n = this.to.x - this.from.x, + s = this.from.y - this.to.y; + var l = Math.sqrt(n * n + s * s) + , c = Math.PI + , u = Math.atan2(s, n) + , f = (u + (.5 * -i + .5) * c) % (2 * c); + e = this.from.x + (.5 * i + .5) * l * Math.sin(f), + t = this.from.y + (.5 * i + .5) * l * Math.cos(f) + } else + Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y) ? this.from.y >= this.to.y ? this.from.x <= this.to.x ? (e = this.from.x + i * s, + t = this.from.y - i * s, + e = this.to.x < e ? this.to.x : e) : this.from.x > this.to.x && (e = this.from.x - i * s, + t = this.from.y - i * s, + e = this.to.x > e ? this.to.x : e) : this.from.y < this.to.y && (this.from.x <= this.to.x ? (e = this.from.x + i * s, + t = this.from.y + i * s, + e = this.to.x < e ? this.to.x : e) : this.from.x > this.to.x && (e = this.from.x - i * s, + t = this.from.y + i * s, + e = this.to.x > e ? this.to.x : e)) : Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y) && (this.from.y >= this.to.y ? this.from.x <= this.to.x ? (e = this.from.x + i * n, + t = this.from.y - i * n, + t = this.to.y > t ? this.to.y : t) : this.from.x > this.to.x && (e = this.from.x - i * n, + t = this.from.y - i * n, + t = this.to.y > t ? this.to.y : t) : this.from.y < this.to.y && (this.from.x <= this.to.x ? (e = this.from.x + i * n, + t = this.from.y + i * n, + t = this.to.y < t ? this.to.y : t) : this.from.x > this.to.x && (e = this.from.x - i * n, + t = this.from.y + i * n, + t = this.to.y < t ? this.to.y : t))); + return { + x: e, + y: t + } + } + }, { + key: "_findBorderPosition", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? {} : arguments[2]; + return this._findBorderPositionBezier(e, t, i.via) + } + }, { + key: "_getDistanceToEdge", + value: function(e, t, i, o, n, s) { + var r = arguments.length <= 6 || void 0 === arguments[6] ? this._getViaCoordinates() : arguments[6]; + return this._getDistanceToBezierEdge(e, t, i, o, n, s, r) + } + }, { + key: "getPoint", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? this._getViaCoordinates() : arguments[1] + , i = e + , o = Math.pow(1 - i, 2) * this.fromPoint.x + 2 * i * (1 - i) * t.x + Math.pow(i, 2) * this.toPoint.x + , n = Math.pow(1 - i, 2) * this.fromPoint.y + 2 * i * (1 - i) * t.y + Math.pow(i, 2) * this.toPoint.y; + return { + x: o, + y: n + } + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(40) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_line", + value: function(e) { + e.beginPath(), + e.moveTo(this.fromPoint.x, this.fromPoint.y), + e.lineTo(this.toPoint.x, this.toPoint.y), + this.enableShadow(e), + e.stroke(), + this.disableShadow(e) + } + }, { + key: "getViaNode", + value: function() {} + }, { + key: "getPoint", + value: function(e) { + return { + x: (1 - e) * this.fromPoint.x + e * this.toPoint.x, + y: (1 - e) * this.fromPoint.y + e * this.toPoint.y + } + } + }, { + key: "_findBorderPosition", + value: function(e, t) { + var i = this.to + , o = this.from; + e.id === this.from.id && (i = this.from, + o = this.to); + var n = Math.atan2(i.y - o.y, i.x - o.x) + , s = i.x - o.x + , r = i.y - o.y + , a = Math.sqrt(s * s + r * r) + , h = e.distanceToBorder(t, n) + , d = (a - h) / a + , l = {}; + return l.x = (1 - d) * o.x + d * i.x, + l.y = (1 - d) * o.y + d * i.y, + l + } + }, { + key: "_getDistanceToEdge", + value: function(e, t, i, o, n, s) { + return this._getDistanceToLine(e, t, i, o, n, s) + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(45) + , a = o(r) + , h = i(46) + , d = o(h) + , l = i(47) + , c = o(l) + , u = i(48) + , f = o(u) + , p = i(49) + , v = o(p) + , y = i(50) + , g = o(y) + , b = i(51) + , m = o(b) + , _ = i(52) + , w = o(_) + , k = i(1) + , x = function() { + function e(t) { + n(this, e), + this.body = t, + this.physicsBody = { + physicsNodeIndices: [], + physicsEdgeIndices: [], + forces: {}, + velocities: {} + }, + this.physicsEnabled = !0, + this.simulationInterval = 1e3 / 60, + this.requiresTimeout = !0, + this.previousStates = {}, + this.referenceState = {}, + this.freezeCache = {}, + this.renderTimer = void 0, + this.adaptiveTimestep = !1, + this.adaptiveTimestepEnabled = !1, + this.adaptiveCounter = 0, + this.adaptiveInterval = 3, + this.stabilized = !1, + this.startedStabilization = !1, + this.stabilizationIterations = 0, + this.ready = !1, + this.options = {}, + this.defaultOptions = { + enabled: !0, + barnesHut: { + theta: .5, + gravitationalConstant: -2e3, + centralGravity: .3, + springLength: 95, + springConstant: .04, + damping: .09, + avoidOverlap: 0 + }, + forceAtlas2Based: { + theta: .5, + gravitationalConstant: -50, + centralGravity: .01, + springConstant: .08, + springLength: 100, + damping: .4, + avoidOverlap: 0 + }, + repulsion: { + centralGravity: .2, + springLength: 200, + springConstant: .05, + nodeDistance: 100, + damping: .09, + avoidOverlap: 0 + }, + hierarchicalRepulsion: { + centralGravity: 0, + springLength: 100, + springConstant: .01, + nodeDistance: 120, + damping: .09 + }, + maxVelocity: 50, + minVelocity: .75, + solver: "barnesHut", + stabilization: { + enabled: !0, + iterations: 1e3, + updateInterval: 50, + onlyDynamicEdges: !1, + fit: !0 + }, + timestep: .5, + adaptiveTimestep: !0 + }, + k.extend(this.options, this.defaultOptions), + this.timestep = .5, + this.layoutFailed = !1, + this.bindEventListeners() + } + return s(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("initPhysics", function() { + e.initPhysics() + }), + this.body.emitter.on("_layoutFailed", function() { + e.layoutFailed = !0 + }), + this.body.emitter.on("resetPhysics", function() { + e.stopSimulation(), + e.ready = !1 + }), + this.body.emitter.on("disablePhysics", function() { + e.physicsEnabled = !1, + e.stopSimulation() + }), + this.body.emitter.on("restorePhysics", function() { + e.setOptions(e.options), + e.ready === !0 && e.startSimulation() + }), + this.body.emitter.on("startSimulation", function() { + e.ready === !0 && e.startSimulation() + }), + this.body.emitter.on("stopSimulation", function() { + e.stopSimulation() + }), + this.body.emitter.on("destroy", function() { + e.stopSimulation(!1), + e.body.emitter.off() + }), + this.body.emitter.on("_dataChanged", function() { + e.updatePhysicsData() + }) + } + }, { + key: "setOptions", + value: function(e) { + void 0 !== e && (e === !1 ? (this.options.enabled = !1, + this.physicsEnabled = !1, + this.stopSimulation()) : (this.physicsEnabled = !0, + k.selectiveNotDeepExtend(["stabilization"], this.options, e), + k.mergeOptions(this.options, e, "stabilization"), + void 0 === e.enabled && (this.options.enabled = !0), + this.options.enabled === !1 && (this.physicsEnabled = !1, + this.stopSimulation()), + this.timestep = this.options.timestep)), + this.init() + } + }, { + key: "init", + value: function() { + var e; + "forceAtlas2Based" === this.options.solver ? (e = this.options.forceAtlas2Based, + this.nodesSolver = new m["default"](this.body,this.physicsBody,e), + this.edgesSolver = new f["default"](this.body,this.physicsBody,e), + this.gravitySolver = new w["default"](this.body,this.physicsBody,e)) : "repulsion" === this.options.solver ? (e = this.options.repulsion, + this.nodesSolver = new d["default"](this.body,this.physicsBody,e), + this.edgesSolver = new f["default"](this.body,this.physicsBody,e), + this.gravitySolver = new g["default"](this.body,this.physicsBody,e)) : "hierarchicalRepulsion" === this.options.solver ? (e = this.options.hierarchicalRepulsion, + this.nodesSolver = new c["default"](this.body,this.physicsBody,e), + this.edgesSolver = new v["default"](this.body,this.physicsBody,e), + this.gravitySolver = new g["default"](this.body,this.physicsBody,e)) : (e = this.options.barnesHut, + this.nodesSolver = new a["default"](this.body,this.physicsBody,e), + this.edgesSolver = new f["default"](this.body,this.physicsBody,e), + this.gravitySolver = new g["default"](this.body,this.physicsBody,e)), + this.modelOptions = e + } + }, { + key: "initPhysics", + value: function() { + this.physicsEnabled === !0 && this.options.enabled === !0 ? this.options.stabilization.enabled === !0 ? this.stabilize() : (this.stabilized = !1, + this.ready = !0, + this.body.emitter.emit("fit", {}, this.layoutFailed), + this.startSimulation()) : (this.ready = !0, + this.body.emitter.emit("fit")) + } + }, { + key: "startSimulation", + value: function() { + this.physicsEnabled === !0 && this.options.enabled === !0 ? (this.stabilized = !1, + this.adaptiveTimestep = !1, + this.body.emitter.emit("_resizeNodes"), + void 0 === this.viewFunction && (this.viewFunction = this.simulationStep.bind(this), + this.body.emitter.on("initRedraw", this.viewFunction), + this.body.emitter.emit("_startRendering"))) : this.body.emitter.emit("_redraw") + } + }, { + key: "stopSimulation", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? !0 : arguments[0]; + this.stabilized = !0, + e === !0 && this._emitStabilized(), + void 0 !== this.viewFunction && (this.body.emitter.off("initRedraw", this.viewFunction), + this.viewFunction = void 0, + e === !0 && this.body.emitter.emit("_stopRendering")) + } + }, { + key: "simulationStep", + value: function() { + var e = Date.now(); + this.physicsTick(); + var t = Date.now() - e; + (t < .4 * this.simulationInterval || this.runDoubleSpeed === !0) && this.stabilized === !1 && (this.physicsTick(), + this.runDoubleSpeed = !0), + this.stabilized === !0 && this.stopSimulation() + } + }, { + key: "_emitStabilized", + value: function() { + var e = this + , t = arguments.length <= 0 || void 0 === arguments[0] ? this.stabilizationIterations : arguments[0]; + (this.stabilizationIterations > 1 || this.startedStabilization === !0) && setTimeout(function() { + e.body.emitter.emit("stabilized", { + iterations: t + }), + e.startedStabilization = !1, + e.stabilizationIterations = 0 + }, 0) + } + }, { + key: "physicsTick", + value: function() { + if (this.startedStabilization === !1 && (this.body.emitter.emit("startStabilizing"), + this.startedStabilization = !0), + this.stabilized === !1) { + if (this.adaptiveTimestep === !0 && this.adaptiveTimestepEnabled === !0) { + var e = 1.2; + this.adaptiveCounter % this.adaptiveInterval === 0 ? (this.timestep = 2 * this.timestep, + this.calculateForces(), + this.moveNodes(), + this.revert(), + this.timestep = .5 * this.timestep, + this.calculateForces(), + this.moveNodes(), + this.calculateForces(), + this.moveNodes(), + this._evaluateStepQuality() === !0 ? this.timestep = e * this.timestep : this.timestep / e < this.options.timestep ? this.timestep = this.options.timestep : (this.adaptiveCounter = -1, + this.timestep = Math.max(this.options.timestep, this.timestep / e))) : (this.calculateForces(), + this.moveNodes()), + this.adaptiveCounter += 1 + } else + this.timestep = this.options.timestep, + this.calculateForces(), + this.moveNodes(); + this.stabilized === !0 && this.revert(), + this.stabilizationIterations++ + } + } + }, { + key: "updatePhysicsData", + value: function() { + this.physicsBody.forces = {}, + this.physicsBody.physicsNodeIndices = [], + this.physicsBody.physicsEdgeIndices = []; + var e = this.body.nodes + , t = this.body.edges; + for (var i in e) + e.hasOwnProperty(i) && e[i].options.physics === !0 && this.physicsBody.physicsNodeIndices.push(e[i].id); + for (var o in t) + t.hasOwnProperty(o) && t[o].options.physics === !0 && this.physicsBody.physicsEdgeIndices.push(t[o].id); + for (var n = 0; n < this.physicsBody.physicsNodeIndices.length; n++) { + var s = this.physicsBody.physicsNodeIndices[n]; + this.physicsBody.forces[s] = { + x: 0, + y: 0 + }, + void 0 === this.physicsBody.velocities[s] && (this.physicsBody.velocities[s] = { + x: 0, + y: 0 + }) + } + for (var r in this.physicsBody.velocities) + void 0 === e[r] && delete this.physicsBody.velocities[r] + } + }, { + key: "revert", + value: function() { + var e = Object.keys(this.previousStates) + , t = this.body.nodes + , i = this.physicsBody.velocities; + this.referenceState = {}; + for (var o = 0; o < e.length; o++) { + var n = e[o]; + void 0 !== t[n] ? t[n].options.physics === !0 && (this.referenceState[n] = { + positions: { + x: t[n].x, + y: t[n].y + } + }, + i[n].x = this.previousStates[n].vx, + i[n].y = this.previousStates[n].vy, + t[n].x = this.previousStates[n].x, + t[n].y = this.previousStates[n].y) : delete this.previousStates[n] + } + } + }, { + key: "_evaluateStepQuality", + value: function() { + var e = void 0 + , t = void 0 + , i = void 0 + , o = this.body.nodes + , n = this.referenceState + , s = .3; + for (var r in this.referenceState) + if (this.referenceState.hasOwnProperty(r) && void 0 !== o[r] && (e = o[r].x - n[r].positions.x, + t = o[r].y - n[r].positions.y, + i = Math.sqrt(Math.pow(e, 2) + Math.pow(t, 2)), + i > s)) + return !1; + return !0 + } + }, { + key: "moveNodes", + value: function() { + for (var e = this.physicsBody.physicsNodeIndices, t = this.options.maxVelocity ? this.options.maxVelocity : 1e9, i = 0, o = 0, n = 5, s = 0; s < e.length; s++) { + var r = e[s] + , a = this._performStep(r, t); + i = Math.max(i, a), + o += a + } + this.adaptiveTimestepEnabled = o / e.length < n, + this.stabilized = i < this.options.minVelocity + } + }, { + key: "_performStep", + value: function(e, t) { + var i = this.body.nodes[e] + , o = this.timestep + , n = this.physicsBody.forces + , s = this.physicsBody.velocities; + if (this.previousStates[e] = { + x: i.x, + y: i.y, + vx: s[e].x, + vy: s[e].y + }, + i.options.fixed.x === !1) { + var r = this.modelOptions.damping * s[e].x + , a = (n[e].x - r) / i.options.mass; + s[e].x += a * o, + s[e].x = Math.abs(s[e].x) > t ? s[e].x > 0 ? t : -t : s[e].x, + i.x += s[e].x * o + } else + n[e].x = 0, + s[e].x = 0; + if (i.options.fixed.y === !1) { + var h = this.modelOptions.damping * s[e].y + , d = (n[e].y - h) / i.options.mass; + s[e].y += d * o, + s[e].y = Math.abs(s[e].y) > t ? s[e].y > 0 ? t : -t : s[e].y, + i.y += s[e].y * o + } else + n[e].y = 0, + s[e].y = 0; + var l = Math.sqrt(Math.pow(s[e].x, 2) + Math.pow(s[e].y, 2)); + return l + } + }, { + key: "calculateForces", + value: function() { + this.gravitySolver.solve(), + this.nodesSolver.solve(), + this.edgesSolver.solve() + } + }, { + key: "_freezeNodes", + value: function() { + var e = this.body.nodes; + for (var t in e) + e.hasOwnProperty(t) && e[t].x && e[t].y && (this.freezeCache[t] = { + x: e[t].options.fixed.x, + y: e[t].options.fixed.y + }, + e[t].options.fixed.x = !0, + e[t].options.fixed.y = !0) + } + }, { + key: "_restoreFrozenNodes", + value: function() { + var e = this.body.nodes; + for (var t in e) + e.hasOwnProperty(t) && void 0 !== this.freezeCache[t] && (e[t].options.fixed.x = this.freezeCache[t].x, + e[t].options.fixed.y = this.freezeCache[t].y); + this.freezeCache = {} + } + }, { + key: "stabilize", + value: function() { + var e = this + , t = arguments.length <= 0 || void 0 === arguments[0] ? this.options.stabilization.iterations : arguments[0]; + return "number" != typeof t && (console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ", this.options.stabilization.iterations), + t = this.options.stabilization.iterations), + 0 === this.physicsBody.physicsNodeIndices.length ? void (this.ready = !0) : (this.adaptiveTimestep = this.options.adaptiveTimestep, + this.body.emitter.emit("_resizeNodes"), + this.stopSimulation(), + this.stabilized = !1, + this.body.emitter.emit("_blockRedraw"), + this.targetIterations = t, + this.options.stabilization.onlyDynamicEdges === !0 && this._freezeNodes(), + this.stabilizationIterations = 0, + void setTimeout(function() { + return e._stabilizationBatch() + }, 0)) + } + }, { + key: "_stabilizationBatch", + value: function() { + this.startedStabilization === !1 && (this.body.emitter.emit("startStabilizing"), + this.startedStabilization = !0); + for (var e = 0; this.stabilized === !1 && e < this.options.stabilization.updateInterval && this.stabilizationIterations < this.targetIterations; ) + this.physicsTick(), + e++; + this.stabilized === !1 && this.stabilizationIterations < this.targetIterations ? (this.body.emitter.emit("stabilizationProgress", { + iterations: this.stabilizationIterations, + total: this.targetIterations + }), + setTimeout(this._stabilizationBatch.bind(this), 0)) : this._finalizeStabilization() + } + }, { + key: "_finalizeStabilization", + value: function() { + this.body.emitter.emit("_allowRedraw"), + this.options.stabilization.fit === !0 && this.body.emitter.emit("fit"), + this.options.stabilization.onlyDynamicEdges === !0 && this._restoreFrozenNodes(), + this.body.emitter.emit("stabilizationIterationsDone"), + this.body.emitter.emit("_requestRedraw"), + this.stabilized === !0 ? this._emitStabilized() : this.startSimulation(), + this.ready = !0 + } + }, { + key: "_drawForces", + value: function(e) { + for (var t = 0; t < this.physicsBody.physicsNodeIndices.length; t++) { + var i = this.body.nodes[this.physicsBody.physicsNodeIndices[t]] + , o = this.physicsBody.forces[this.physicsBody.physicsNodeIndices[t]] + , n = 20 + , s = .03 + , r = Math.sqrt(Math.pow(o.x, 2) + Math.pow(o.x, 2)) + , a = Math.min(Math.max(5, r), 15) + , h = 3 * a + , d = k.HSVToHex((180 - 180 * Math.min(1, Math.max(0, s * r))) / 360, 1, 1); + e.lineWidth = a, + e.strokeStyle = d, + e.beginPath(), + e.moveTo(i.x, i.y), + e.lineTo(i.x + n * o.x, i.y + n * o.y), + e.stroke(); + var l = Math.atan2(o.y, o.x); + e.fillStyle = d, + e.arrow(i.x + n * o.x + Math.cos(l) * h, i.y + n * o.y + Math.sin(l) * h, l, h), + e.fill() + } + } + }]), + e + }(); + t["default"] = x + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.barnesHutTree, + this.setOptions(n), + this.randomSeed = 5 + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e, + this.thetaInversed = 1 / this.options.theta, + this.overlapAvoidanceFactor = 1 - Math.max(0, Math.min(1, this.options.avoidOverlap)) + } + }, { + key: "seededRandom", + value: function() { + var e = 1e4 * Math.sin(this.randomSeed++); + return e - Math.floor(e) + } + }, { + key: "solve", + value: function() { + if (0 !== this.options.gravitationalConstant && this.physicsBody.physicsNodeIndices.length > 0) { + var e = void 0 + , t = this.body.nodes + , i = this.physicsBody.physicsNodeIndices + , o = i.length + , n = this._formBarnesHutTree(t, i); + this.barnesHutTree = n; + for (var s = 0; o > s; s++) + e = t[i[s]], + e.options.mass > 0 && (this._getForceContribution(n.root.children.NW, e), + this._getForceContribution(n.root.children.NE, e), + this._getForceContribution(n.root.children.SW, e), + this._getForceContribution(n.root.children.SE, e)) + } + } + }, { + key: "_getForceContribution", + value: function(e, t) { + if (e.childrenCount > 0) { + var i = void 0 + , o = void 0 + , n = void 0; + i = e.centerOfMass.x - t.x, + o = e.centerOfMass.y - t.y, + n = Math.sqrt(i * i + o * o), + n * e.calcSize > this.thetaInversed ? this._calculateForces(n, i, o, t, e) : 4 === e.childrenCount ? (this._getForceContribution(e.children.NW, t), + this._getForceContribution(e.children.NE, t), + this._getForceContribution(e.children.SW, t), + this._getForceContribution(e.children.SE, t)) : e.children.data.id != t.id && this._calculateForces(n, i, o, t, e) + } + } + }, { + key: "_calculateForces", + value: function(e, t, i, o, n) { + 0 === e && (e = .1, + t = e), + this.overlapAvoidanceFactor < 1 && (e = Math.max(.1 + this.overlapAvoidanceFactor * o.shape.radius, e - o.shape.radius)); + var s = this.options.gravitationalConstant * n.mass * o.options.mass / Math.pow(e, 3) + , r = t * s + , a = i * s; + this.physicsBody.forces[o.id].x += r, + this.physicsBody.forces[o.id].y += a + } + }, { + key: "_formBarnesHutTree", + value: function(e, t) { + for (var i = void 0, o = t.length, n = e[t[0]].x, s = e[t[0]].y, r = e[t[0]].x, a = e[t[0]].y, h = 1; o > h; h++) { + var d = e[t[h]].x + , l = e[t[h]].y; + e[t[h]].options.mass > 0 && (n > d && (n = d), + d > r && (r = d), + s > l && (s = l), + l > a && (a = l)) + } + var c = Math.abs(r - n) - Math.abs(a - s); + c > 0 ? (s -= .5 * c, + a += .5 * c) : (n += .5 * c, + r -= .5 * c); + var u = 1e-5 + , f = Math.max(u, Math.abs(r - n)) + , p = .5 * f + , v = .5 * (n + r) + , y = .5 * (s + a) + , g = { + root: { + centerOfMass: { + x: 0, + y: 0 + }, + mass: 0, + range: { + minX: v - p, + maxX: v + p, + minY: y - p, + maxY: y + p + }, + size: f, + calcSize: 1 / f, + children: { + data: null + }, + maxWidth: 0, + level: 0, + childrenCount: 4 + } + }; + this._splitBranch(g.root); + for (var b = 0; o > b; b++) + i = e[t[b]], + i.options.mass > 0 && this._placeInTree(g.root, i); + return g + } + }, { + key: "_updateBranchMass", + value: function(e, t) { + var i = e.mass + t.options.mass + , o = 1 / i; + e.centerOfMass.x = e.centerOfMass.x * e.mass + t.x * t.options.mass, + e.centerOfMass.x *= o, + e.centerOfMass.y = e.centerOfMass.y * e.mass + t.y * t.options.mass, + e.centerOfMass.y *= o, + e.mass = i; + var n = Math.max(Math.max(t.height, t.radius), t.width); + e.maxWidth = e.maxWidth < n ? n : e.maxWidth + } + }, { + key: "_placeInTree", + value: function(e, t, i) { + 1 == i && void 0 !== i || this._updateBranchMass(e, t), + e.children.NW.range.maxX > t.x ? e.children.NW.range.maxY > t.y ? this._placeInRegion(e, t, "NW") : this._placeInRegion(e, t, "SW") : e.children.NW.range.maxY > t.y ? this._placeInRegion(e, t, "NE") : this._placeInRegion(e, t, "SE") + } + }, { + key: "_placeInRegion", + value: function(e, t, i) { + switch (e.children[i].childrenCount) { + case 0: + e.children[i].children.data = t, + e.children[i].childrenCount = 1, + this._updateBranchMass(e.children[i], t); + break; + case 1: + e.children[i].children.data.x === t.x && e.children[i].children.data.y === t.y ? (t.x += this.seededRandom(), + t.y += this.seededRandom()) : (this._splitBranch(e.children[i]), + this._placeInTree(e.children[i], t)); + break; + case 4: + this._placeInTree(e.children[i], t) + } + } + }, { + key: "_splitBranch", + value: function(e) { + var t = null; + 1 === e.childrenCount && (t = e.children.data, + e.mass = 0, + e.centerOfMass.x = 0, + e.centerOfMass.y = 0), + e.childrenCount = 4, + e.children.data = null, + this._insertRegion(e, "NW"), + this._insertRegion(e, "NE"), + this._insertRegion(e, "SW"), + this._insertRegion(e, "SE"), + null != t && this._placeInTree(e, t) + } + }, { + key: "_insertRegion", + value: function(e, t) { + var i = void 0 + , o = void 0 + , n = void 0 + , s = void 0 + , r = .5 * e.size; + switch (t) { + case "NW": + i = e.range.minX, + o = e.range.minX + r, + n = e.range.minY, + s = e.range.minY + r; + break; + case "NE": + i = e.range.minX + r, + o = e.range.maxX, + n = e.range.minY, + s = e.range.minY + r; + break; + case "SW": + i = e.range.minX, + o = e.range.minX + r, + n = e.range.minY + r, + s = e.range.maxY; + break; + case "SE": + i = e.range.minX + r, + o = e.range.maxX, + n = e.range.minY + r, + s = e.range.maxY + } + e.children[t] = { + centerOfMass: { + x: 0, + y: 0 + }, + mass: 0, + range: { + minX: i, + maxX: o, + minY: n, + maxY: s + }, + size: .5 * e.size, + calcSize: 2 * e.calcSize, + children: { + data: null + }, + maxWidth: 0, + level: e.level + 1, + childrenCount: 0 + } + } + }, { + key: "_debug", + value: function(e, t) { + void 0 !== this.barnesHutTree && (e.lineWidth = 1, + this._drawBranch(this.barnesHutTree.root, e, t)) + } + }, { + key: "_drawBranch", + value: function(e, t, i) { + void 0 === i && (i = "#FF0000"), + 4 === e.childrenCount && (this._drawBranch(e.children.NW, t), + this._drawBranch(e.children.NE, t), + this._drawBranch(e.children.SE, t), + this._drawBranch(e.children.SW, t)), + t.strokeStyle = i, + t.beginPath(), + t.moveTo(e.range.minX, e.range.minY), + t.lineTo(e.range.maxX, e.range.minY), + t.stroke(), + t.beginPath(), + t.moveTo(e.range.maxX, e.range.minY), + t.lineTo(e.range.maxX, e.range.maxY), + t.stroke(), + t.beginPath(), + t.moveTo(e.range.maxX, e.range.maxY), + t.lineTo(e.range.minX, e.range.maxY), + t.stroke(), + t.beginPath(), + t.moveTo(e.range.minX, e.range.maxY), + t.lineTo(e.range.minX, e.range.minY), + t.stroke() + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.setOptions(n) + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "solve", + value: function() { + for (var e, t, i, o, n, s, r, a, h = this.body.nodes, d = this.physicsBody.physicsNodeIndices, l = this.physicsBody.forces, c = this.options.nodeDistance, u = -2 / 3 / c, f = 4 / 3, p = 0; p < d.length - 1; p++) { + r = h[d[p]]; + for (var v = p + 1; v < d.length; v++) + a = h[d[v]], + e = a.x - r.x, + t = a.y - r.y, + i = Math.sqrt(e * e + t * t), + 0 === i && (i = .1 * Math.random(), + e = i), + 2 * c > i && (s = .5 * c > i ? 1 : u * i + f, + s /= i, + o = e * s, + n = t * s, + l[r.id].x -= o, + l[r.id].y -= n, + l[a.id].x += o, + l[a.id].y += n) + } + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.setOptions(n) + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "solve", + value: function() { + var e, t, i, o, n, s, r, a, h, d, l = this.body.nodes, c = this.physicsBody.physicsNodeIndices, u = this.physicsBody.forces, f = this.options.nodeDistance; + for (h = 0; h < c.length - 1; h++) + for (r = l[c[h]], + d = h + 1; d < c.length; d++) + if (a = l[c[d]], + r.level === a.level) { + e = a.x - r.x, + t = a.y - r.y, + i = Math.sqrt(e * e + t * t); + var p = .05; + s = f > i ? -Math.pow(p * i, 2) + Math.pow(p * f, 2) : 0, + 0 === i ? i = .01 : s /= i, + o = e * s, + n = t * s, + u[r.id].x -= o, + u[r.id].y -= n, + u[a.id].x += o, + u[a.id].y += n + } + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.setOptions(n) + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "solve", + value: function() { + for (var e = void 0, t = void 0, i = this.physicsBody.physicsEdgeIndices, o = this.body.edges, n = void 0, s = void 0, r = void 0, a = 0; a < i.length; a++) + t = o[i[a]], + t.connected === !0 && t.toId !== t.fromId && void 0 !== this.body.nodes[t.toId] && void 0 !== this.body.nodes[t.fromId] && (void 0 !== t.edgeType.via ? (e = void 0 === t.options.length ? this.options.springLength : t.options.length, + n = t.to, + s = t.edgeType.via, + r = t.from, + this._calculateSpringForce(n, s, .5 * e * this.body.data.edges._data[i[a]].weight), + this._calculateSpringForce(s, r, .5 * e * this.body.data.edges._data[i[a]].weight)) : (e = void 0 === t.options.length ? 1.5 * this.options.springLength : t.options.length, + this._calculateSpringForce(t.from, t.to, e * this.body.data.edges._data[i[a]].weight))) + } + }, { + key: "_calculateSpringForce", + value: function(e, t, i) { + var o = e.x - t.x + , n = e.y - t.y + , s = Math.max(Math.sqrt(o * o + n * n), .01) + , r = this.options.springConstant * (i - s) / s + , a = o * r + , h = n * r; + void 0 !== this.physicsBody.forces[e.id] && (this.physicsBody.forces[e.id].x += a, + this.physicsBody.forces[e.id].y += h), + void 0 !== this.physicsBody.forces[t.id] && (this.physicsBody.forces[t.id].x -= a, + this.physicsBody.forces[t.id].y -= h) + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.setOptions(n) + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "solve", + value: function() { + for (var e, t, i, o, n, s, r, a, h = this.body.edges, d = .5, l = this.physicsBody.physicsEdgeIndices, c = this.physicsBody.physicsNodeIndices, u = this.physicsBody.forces, f = 0; f < c.length; f++) { + var p = c[f]; + u[p].springFx = 0, + u[p].springFy = 0 + } + for (var v = 0; v < l.length; v++) + t = h[l[v]], + t.connected === !0 && (e = void 0 === t.options.length ? this.options.springLength : t.options.length, + i = t.from.x - t.to.x, + o = t.from.y - t.to.y, + a = Math.sqrt(i * i + o * o), + a = 0 === a ? .01 : a, + r = this.options.springConstant * (e - a) / a, + n = i * r, + s = o * r, + t.to.level != t.from.level ? (void 0 !== u[t.toId] && (u[t.toId].springFx -= n, + u[t.toId].springFy -= s), + void 0 !== u[t.fromId] && (u[t.fromId].springFx += n, + u[t.fromId].springFy += s)) : (void 0 !== u[t.toId] && (u[t.toId].x -= d * n, + u[t.toId].y -= d * s), + void 0 !== u[t.fromId] && (u[t.fromId].x += d * n, + u[t.fromId].y += d * s))); + for (var y, g, r = 1, b = 0; b < c.length; b++) { + var m = c[b]; + y = Math.min(r, Math.max(-r, u[m].springFx)), + g = Math.min(r, Math.max(-r, u[m].springFy)), + u[m].x += y, + u[m].y += g + } + for (var _ = 0, w = 0, k = 0; k < c.length; k++) { + var x = c[k]; + _ += u[x].x, + w += u[x].y + } + for (var O = _ / c.length, E = w / c.length, M = 0; M < c.length; M++) { + var D = c[M]; + u[D].x -= O, + u[D].y -= E + } + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t, o, n) { + i(this, e), + this.body = t, + this.physicsBody = o, + this.setOptions(n) + } + return o(e, [{ + key: "setOptions", + value: function(e) { + this.options = e + } + }, { + key: "solve", + value: function() { + for (var e = void 0, t = void 0, i = void 0, o = void 0, n = this.body.nodes, s = this.physicsBody.physicsNodeIndices, r = this.physicsBody.forces, a = 0; a < s.length; a++) { + var h = s[a]; + o = n[h], + e = -o.x, + t = -o.y, + i = Math.sqrt(e * e + t * t), + this._calculateForces(i, e, t, r, o) + } + } + }, { + key: "_calculateForces", + value: function(e, t, i, o, n) { + var s = 0 === e ? 0 : this.options.centralGravity / e; + o[n.id].x = t * s, + o[n.id].y = i * s + } + }]), + e + }(); + t["default"] = n + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(45) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_calculateForces", + value: function(e, t, i, o, n) { + 0 === e && (e = .1 * Math.random(), + t = e), + this.overlapAvoidanceFactor < 1 && (e = Math.max(.1 + this.overlapAvoidanceFactor * o.shape.radius, e - o.shape.radius)); + var s = o.edges.length + 1 + , r = this.options.gravitationalConstant * n.mass * o.options.mass * s / Math.pow(e, 2) + , a = t * r + , h = i * r; + this.physicsBody.forces[o.id].x += a, + this.physicsBody.forces[o.id].y += h + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(50) + , d = o(h) + , l = function(e) { + function t(e, i, o) { + return n(this, t), + s(this, Object.getPrototypeOf(t).call(this, e, i, o)) + } + return r(t, e), + a(t, [{ + key: "_calculateForces", + value: function(e, t, i, o, n) { + if (e > 0) { + var s = n.edges.length + 1 + , r = this.options.centralGravity * s * n.options.mass; + o[n.id].x = t * r, + o[n.id].y = i * r + } + } + }]), + t + }(d["default"]); + t["default"] = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , r = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , a = i(54) + , h = o(a) + , d = i(55) + , l = o(d) + , c = i(1) + , u = function() { + function e(t) { + var i = this; + n(this, e), + this.body = t, + this.clusteredNodes = {}, + this.clusteredEdges = {}, + this.options = {}, + this.defaultOptions = {}, + c.extend(this.options, this.defaultOptions), + this.body.emitter.on("_resetData", function() { + i.clusteredNodes = {}, + i.clusteredEdges = {} + }) + } + return r(e, [{ + key: "setOptions", + value: function(e) {} + }, { + key: "clusterByHubsize", + value: function(e, t) { + void 0 === e ? e = this._getHubSize() : "object" === ("undefined" == typeof e ? "undefined" : s(e)) && (t = this._checkOptions(e), + e = this._getHubSize()); + for (var i = [], o = 0; o < this.body.nodeIndices.length; o++) { + var n = this.body.nodes[this.body.nodeIndices[o]]; + n.edges.length >= e && i.push(n.id) + } + for (var r = 0; r < i.length; r++) + this.clusterByConnection(i[r], t, !0); + this.body.emitter.emit("_dataChanged") + } + }, { + key: "cluster", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0] + , t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + if (void 0 === e.joinCondition) + throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options."); + e = this._checkOptions(e); + for (var i = {}, o = {}, n = 0; n < this.body.nodeIndices.length; n++) { + var s = this.body.nodeIndices[n] + , r = this.body.nodes[s] + , a = h["default"].cloneOptions(r); + if (e.joinCondition(a) === !0) { + i[s] = this.body.nodes[s]; + for (var d = 0; d < r.edges.length; d++) { + var l = r.edges[d]; + void 0 === this.clusteredEdges[l.id] && (o[l.id] = l) + } + } + } + this._cluster(i, o, e, t) + } + }, { + key: "clusterByEdgeCount", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !0 : arguments[2]; + t = this._checkOptions(t); + for (var o = [], n = {}, s = void 0, r = void 0, a = void 0, d = void 0, l = void 0, c = 0; c < this.body.nodeIndices.length; c++) { + var u = {} + , f = {}; + if (d = this.body.nodeIndices[c], + void 0 === n[d]) { + l = 0, + a = this.body.nodes[d], + r = []; + for (var p = 0; p < a.edges.length; p++) + s = a.edges[p], + void 0 === this.clusteredEdges[s.id] && (s.toId !== s.fromId && l++, + r.push(s)); + if (l === e) { + for (var v = !0, y = 0; y < r.length; y++) { + s = r[y]; + var g = this._getConnectedId(s, d); + if (void 0 === t.joinCondition) + f[s.id] = s, + u[d] = this.body.nodes[d], + u[g] = this.body.nodes[g], + n[d] = !0; + else { + var b = h["default"].cloneOptions(this.body.nodes[d]); + if (t.joinCondition(b) !== !0) { + v = !1; + break + } + f[s.id] = s, + u[d] = this.body.nodes[d], + n[d] = !0 + } + } + Object.keys(u).length > 0 && Object.keys(f).length > 0 && v === !0 && o.push({ + nodes: u, + edges: f + }) + } + } + } + for (var m = 0; m < o.length; m++) + this._cluster(o[m].nodes, o[m].edges, t, !1); + i === !0 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "clusterOutliers", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + this.clusterByEdgeCount(1, e, t) + } + }, { + key: "clusterBridges", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + this.clusterByEdgeCount(2, e, t) + } + }, { + key: "clusterByConnection", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !0 : arguments[2]; + if (void 0 === e) + throw new Error("No nodeId supplied to clusterByConnection!"); + if (void 0 === this.body.nodes[e]) + throw new Error("The nodeId given to clusterByConnection does not exist!"); + var o = this.body.nodes[e]; + t = this._checkOptions(t, o), + void 0 === t.clusterNodeProperties.x && (t.clusterNodeProperties.x = o.x), + void 0 === t.clusterNodeProperties.y && (t.clusterNodeProperties.y = o.y), + void 0 === t.clusterNodeProperties.fixed && (t.clusterNodeProperties.fixed = {}, + t.clusterNodeProperties.fixed.x = o.options.fixed.x, + t.clusterNodeProperties.fixed.y = o.options.fixed.y); + var n = {} + , s = {} + , r = o.id + , a = h["default"].cloneOptions(o); + n[r] = o; + for (var d = 0; d < o.edges.length; d++) { + var l = o.edges[d]; + if (void 0 === this.clusteredEdges[l.id]) { + var c = this._getConnectedId(l, r); + if (void 0 === this.clusteredNodes[c]) + if (c !== r) + if (void 0 === t.joinCondition) + s[l.id] = l, + n[c] = this.body.nodes[c]; + else { + var u = h["default"].cloneOptions(this.body.nodes[c]); + t.joinCondition(a, u) === !0 && (s[l.id] = l, + n[c] = this.body.nodes[c]) + } + else + s[l.id] = l + } + } + this._cluster(n, s, t, i) + } + }, { + key: "_createClusterEdges", + value: function(e, t, i, o) { + for (var n = void 0, s = void 0, r = void 0, a = void 0, d = void 0, l = void 0, u = Object.keys(e), f = [], p = 0; p < u.length; p++) { + s = u[p], + r = e[s]; + for (var v = 0; v < r.edges.length; v++) + n = r.edges[v], + void 0 === this.clusteredEdges[n.id] && (n.toId == n.fromId ? t[n.id] = n : n.toId == s ? (a = i.id, + d = n.fromId, + l = d) : (a = n.toId, + d = i.id, + l = a), + void 0 === e[l] && f.push({ + edge: n, + fromId: d, + toId: a + })) + } + for (var y = 0; y < f.length; y++) { + var g = f[y].edge + , b = h["default"].cloneOptions(g, "edge"); + c.deepExtend(b, o), + b.from = f[y].fromId, + b.to = f[y].toId, + b.id = "clusterEdge:" + c.randomUUID(); + var m = this.body.functions.createEdge(b); + m.clusteringEdgeReplacingId = g.id, + this.body.edges[m.id] = m, + m.connect(), + this._backupEdgeOptions(g), + g.setOptions({ + physics: !1, + hidden: !0 + }) + } + } + }, { + key: "_checkOptions", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0]; + return void 0 === e.clusterEdgeProperties && (e.clusterEdgeProperties = {}), + void 0 === e.clusterNodeProperties && (e.clusterNodeProperties = {}), + e + } + }, { + key: "_cluster", + value: function(e, t, i) { + var o = arguments.length <= 3 || void 0 === arguments[3] ? !0 : arguments[3]; + if (!(Object.keys(e).length < 2)) { + for (var n in e) + if (e.hasOwnProperty(n) && void 0 !== this.clusteredNodes[n]) + return; + var s = c.deepExtend({}, i.clusterNodeProperties); + if (void 0 !== i.processProperties) { + var r = []; + for (var a in e) + if (e.hasOwnProperty(a)) { + var d = h["default"].cloneOptions(e[a]); + r.push(d) + } + var u = []; + for (var f in t) + if (t.hasOwnProperty(f) && "clusterEdge:" !== f.substr(0, 12)) { + var p = h["default"].cloneOptions(t[f], "edge"); + u.push(p) + } + if (s = i.processProperties(s, r, u), + !s) + throw new Error("The processProperties function does not return properties!") + } + void 0 === s.id && (s.id = "cluster:" + c.randomUUID()); + var v = s.id; + void 0 === s.label && (s.label = "cluster"); + var y = void 0; + void 0 === s.x && (y = this._getClusterPosition(e), + s.x = y.x), + void 0 === s.y && (void 0 === y && (y = this._getClusterPosition(e)), + s.y = y.y), + s.id = v; + var g = this.body.functions.createNode(s, l["default"]); + g.isCluster = !0, + g.containedNodes = e, + g.containedEdges = t, + g.clusterEdgeProperties = i.clusterEdgeProperties, + this.body.nodes[s.id] = g, + this._createClusterEdges(e, t, s, i.clusterEdgeProperties); + for (var b in t) + if (t.hasOwnProperty(b) && void 0 !== this.body.edges[b]) { + var m = this.body.edges[b]; + this._backupEdgeOptions(m), + m.setOptions({ + physics: !1, + hidden: !0 + }) + } + for (var _ in e) + e.hasOwnProperty(_) && (this.clusteredNodes[_] = { + clusterId: s.id, + node: this.body.nodes[_] + }, + this.body.nodes[_].setOptions({ + hidden: !0, + physics: !1 + })); + s.id = void 0, + o === !0 && this.body.emitter.emit("_dataChanged") + } + } + }, { + key: "_backupEdgeOptions", + value: function(e) { + void 0 === this.clusteredEdges[e.id] && (this.clusteredEdges[e.id] = { + physics: e.options.physics, + hidden: e.options.hidden + }) + } + }, { + key: "_restoreEdge", + value: function(e) { + var t = this.clusteredEdges[e.id]; + void 0 !== t && (e.setOptions({ + physics: t.physics, + hidden: t.hidden + }), + delete this.clusteredEdges[e.id]) + } + }, { + key: "isCluster", + value: function(e) { + return void 0 !== this.body.nodes[e] ? this.body.nodes[e].isCluster === !0 : (console.log("Node does not exist."), + !1) + } + }, { + key: "_getClusterPosition", + value: function(e) { + for (var t = Object.keys(e), i = e[t[0]].x, o = e[t[0]].x, n = e[t[0]].y, s = e[t[0]].y, r = void 0, a = 1; a < t.length; a++) + r = e[t[a]], + i = r.x < i ? r.x : i, + o = r.x > o ? r.x : o, + n = r.y < n ? r.y : n, + s = r.y > s ? r.y : s; + return { + x: .5 * (i + o), + y: .5 * (n + s) + } + } + }, { + key: "openCluster", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !0 : arguments[2]; + if (void 0 === e) + throw new Error("No clusterNodeId supplied to openCluster."); + if (void 0 === this.body.nodes[e]) + throw new Error("The clusterNodeId supplied to openCluster does not exist."); + if (void 0 === this.body.nodes[e].containedNodes) + return void console.log("The node:" + e + " is not a cluster."); + var o = this.body.nodes[e] + , n = o.containedNodes + , s = o.containedEdges; + if (void 0 !== t && void 0 !== t.releaseFunction && "function" == typeof t.releaseFunction) { + var r = {} + , a = { + x: o.x, + y: o.y + }; + for (var d in n) + if (n.hasOwnProperty(d)) { + var l = this.body.nodes[d]; + r[d] = { + x: l.x, + y: l.y + } + } + var u = t.releaseFunction(a, r); + for (var f in n) + if (n.hasOwnProperty(f)) { + var p = this.body.nodes[f]; + void 0 !== u[f] && (p.x = void 0 === u[f].x ? o.x : u[f].x, + p.y = void 0 === u[f].y ? o.y : u[f].y) + } + } else + for (var v in n) + if (n.hasOwnProperty(v)) { + var y = this.body.nodes[v]; + y = n[v], + y.options.fixed.x === !1 && (y.x = o.x), + y.options.fixed.y === !1 && (y.y = o.y) + } + for (var g in n) + if (n.hasOwnProperty(g)) { + var b = this.body.nodes[g]; + b.vx = o.vx, + b.vy = o.vy, + b.setOptions({ + hidden: !1, + physics: !0 + }), + delete this.clusteredNodes[g] + } + for (var m = [], _ = 0; _ < o.edges.length; _++) + m.push(o.edges[_]); + for (var w = 0; w < m.length; w++) { + var k = m[w] + , x = this._getConnectedId(k, e); + if (void 0 !== this.clusteredNodes[x]) { + var O = this.body.nodes[this.clusteredNodes[x].clusterId] + , E = this.body.edges[k.clusteringEdgeReplacingId]; + if (void 0 !== E) { + O.containedEdges[E.id] = E, + delete s[E.id]; + var M = E.fromId + , D = E.toId; + E.toId == x ? D = this.clusteredNodes[x].clusterId : M = this.clusteredNodes[x].clusterId; + var S = h["default"].cloneOptions(E, "edge"); + c.deepExtend(S, O.clusterEdgeProperties); + var C = "clusterEdge:" + c.randomUUID(); + c.deepExtend(S, { + from: M, + to: D, + hidden: !1, + physics: !0, + id: C + }); + var T = this.body.functions.createEdge(S); + T.clusteringEdgeReplacingId = E.id, + this.body.edges[C] = T, + this.body.edges[C].connect() + } + } else { + var P = this.body.edges[k.clusteringEdgeReplacingId]; + void 0 !== P && this._restoreEdge(P) + } + k.cleanup(), + k.disconnect(), + delete this.body.edges[k.id] + } + for (var B in s) + s.hasOwnProperty(B) && this._restoreEdge(s[B]); + delete this.body.nodes[e], + i === !0 && this.body.emitter.emit("_dataChanged") + } + }, { + key: "getNodesInCluster", + value: function(e) { + var t = []; + if (this.isCluster(e) === !0) { + var i = this.body.nodes[e].containedNodes; + for (var o in i) + i.hasOwnProperty(o) && t.push(this.body.nodes[o].id) + } + return t + } + }, { + key: "findNode", + value: function(e) { + for (var t = [], i = 100, o = 0; void 0 !== this.clusteredNodes[e] && i > o; ) + t.push(this.body.nodes[e].id), + e = this.clusteredNodes[e].clusterId, + o++; + return t.push(this.body.nodes[e].id), + t.reverse(), + t + } + }, { + key: "_getConnectedId", + value: function(e, t) { + return e.toId != t ? e.toId : e.fromId != t ? e.fromId : e.fromId + } + }, { + key: "_getHubSize", + value: function() { + for (var e = 0, t = 0, i = 0, o = 0, n = 0; n < this.body.nodeIndices.length; n++) { + var s = this.body.nodes[this.body.nodeIndices[n]]; + s.edges.length > o && (o = s.edges.length), + e += s.edges.length, + t += Math.pow(s.edges.length, 2), + i += 1 + } + e /= i, + t /= i; + var r = t - Math.pow(e, 2) + , a = Math.sqrt(r) + , h = Math.floor(e + 2 * a); + return h > o && (h = o), + h + } + }]), + e + }(); + t["default"] = u + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = i(1) + , r = function() { + function e() { + o(this, e) + } + return n(e, null, [{ + key: "getRange", + value: function(e) { + var t, i = arguments.length <= 1 || void 0 === arguments[1] ? [] : arguments[1], o = 1e9, n = -1e9, s = 1e9, r = -1e9; + if (i.length > 0) + for (var a = 0; a < i.length; a++) + t = e[i[a]], + s > t.shape.boundingBox.left && (s = t.shape.boundingBox.left), + r < t.shape.boundingBox.right && (r = t.shape.boundingBox.right), + o > t.shape.boundingBox.top && (o = t.shape.boundingBox.top), + n < t.shape.boundingBox.bottom && (n = t.shape.boundingBox.bottom); + return 1e9 === s && -1e9 === r && 1e9 === o && -1e9 === n && (o = 0, + n = 0, + s = 0, + r = 0), + { + minX: s, + maxX: r, + minY: o, + maxY: n + } + } + }, { + key: "getRangeCore", + value: function(e) { + var t, i = arguments.length <= 1 || void 0 === arguments[1] ? [] : arguments[1], o = 1e9, n = -1e9, s = 1e9, r = -1e9; + if (i.length > 0) + for (var a = 0; a < i.length; a++) + t = e[i[a]], + s > t.x && (s = t.x), + r < t.x && (r = t.x), + o > t.y && (o = t.y), + n < t.y && (n = t.y); + return 1e9 === s && -1e9 === r && 1e9 === o && -1e9 === n && (o = 0, + n = 0, + s = 0, + r = 0), + { + minX: s, + maxX: r, + minY: o, + maxY: n + } + } + }, { + key: "findCenter", + value: function(e) { + return { + x: .5 * (e.maxX + e.minX), + y: .5 * (e.maxY + e.minY) + } + } + }, { + key: "cloneOptions", + value: function(e, t) { + var i = {}; + return void 0 === t || "node" === t ? (s.deepExtend(i, e.options, !0), + i.x = e.x, + i.y = e.y, + i.amountOfConnections = e.edges.length) : s.deepExtend(i, e.options, !0), + i + } + }]), + e + }(); + t["default"] = r + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + function s(e, t) { + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + } + function r(e, t) { + if ("function" != typeof t && null !== t) + throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var a = i(15) + , h = o(a) + , d = function(e) { + function t(e, i, o, r, a) { + n(this, t); + var h = s(this, Object.getPrototypeOf(t).call(this, e, i, o, r, a)); + return h.isCluster = !0, + h.containedNodes = {}, + h.containedEdges = {}, + h + } + return r(t, e), + t + }(h["default"]); + t["default"] = d + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }(); + "undefined" != typeof window && (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame); + var s = i(1) + , r = function() { + function e(t, i) { + o(this, e), + this.body = t, + this.canvas = i, + this.redrawRequested = !1, + this.renderTimer = void 0, + this.requiresTimeout = !0, + this.renderingActive = !1, + this.renderRequests = 0, + this.pixelRatio = void 0, + this.allowRedraw = !0, + this.dragging = !1, + this.options = {}, + this.defaultOptions = { + hideEdgesOnDrag: !1, + hideNodesOnDrag: !1 + }, + s.extend(this.options, this.defaultOptions), + this._determineBrowserMethod(), + this.bindEventListeners() + } + return n(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("dragStart", function() { + e.dragging = !0 + }), + this.body.emitter.on("dragEnd", function() { + return e.dragging = !1 + }), + this.body.emitter.on("_resizeNodes", function() { + return e._resizeNodes() + }), + this.body.emitter.on("_redraw", function() { + e.renderingActive === !1 && e._redraw() + }), + this.body.emitter.on("_blockRedraw", function() { + e.allowRedraw = !1 + }), + this.body.emitter.on("_allowRedraw", function() { + e.allowRedraw = !0, + e.redrawRequested = !1 + }), + this.body.emitter.on("_requestRedraw", this._requestRedraw.bind(this)), + this.body.emitter.on("_startRendering", function() { + e.renderRequests += 1, + e.renderingActive = !0, + e._startRendering() + }), + this.body.emitter.on("_stopRendering", function() { + e.renderRequests -= 1, + e.renderingActive = e.renderRequests > 0, + e.renderTimer = void 0 + }), + this.body.emitter.on("destroy", function() { + e.renderRequests = 0, + e.allowRedraw = !1, + e.renderingActive = !1, + e.requiresTimeout === !0 ? clearTimeout(e.renderTimer) : cancelAnimationFrame(e.renderTimer), + e.body.emitter.off() + }) + } + }, { + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + var t = ["hideEdgesOnDrag", "hideNodesOnDrag"]; + s.selectiveDeepExtend(t, this.options, e) + } + } + }, { + key: "_startRendering", + value: function() { + this.renderingActive === !0 && void 0 === this.renderTimer && (this.requiresTimeout === !0 ? this.renderTimer = window.setTimeout(this._renderStep.bind(this), this.simulationInterval) : this.renderTimer = window.requestAnimationFrame(this._renderStep.bind(this))) + } + }, { + key: "_renderStep", + value: function() { + this.renderingActive === !0 && (this.renderTimer = void 0, + this.requiresTimeout === !0 && this._startRendering(), + this._redraw(), + this.requiresTimeout === !1 && this._startRendering()) + } + }, { + key: "redraw", + value: function() { + this.body.emitter.emit("setSize"), + this._redraw() + } + }, { + key: "_requestRedraw", + value: function() { + var e = this; + this.redrawRequested !== !0 && this.renderingActive === !1 && this.allowRedraw === !0 && (this.redrawRequested = !0, + this.requiresTimeout === !0 ? window.setTimeout(function() { + e._redraw(!1) + }, 0) : window.requestAnimationFrame(function() { + e._redraw(!1) + })) + } + }, { + key: "_redraw", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? !1 : arguments[0]; + if (this.allowRedraw === !0) { + this.body.emitter.emit("initRedraw"), + this.redrawRequested = !1; + var t = this.canvas.frame.canvas.getContext("2d"); + 0 !== this.canvas.frame.canvas.width && 0 !== this.canvas.frame.canvas.height || this.canvas.setSize(), + this.pixelRatio = (window.devicePixelRatio || 1) / (t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1), + t.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + var i = this.canvas.frame.canvas.clientWidth + , o = this.canvas.frame.canvas.clientHeight; + if (t.clearRect(0, 0, i, o), + 0 === this.canvas.frame.clientWidth) + return; + t.save(), + t.translate(this.body.view.translation.x, this.body.view.translation.y), + t.scale(this.body.view.scale, this.body.view.scale), + t.beginPath(), + this.body.emitter.emit("beforeDrawing", t), + t.closePath(), + e === !1 && (this.dragging === !1 || this.dragging === !0 && this.options.hideEdgesOnDrag === !1) && this._drawEdges(t), + (this.dragging === !1 || this.dragging === !0 && this.options.hideNodesOnDrag === !1) && this._drawNodes(t, e), + t.beginPath(), + this.body.emitter.emit("afterDrawing", t), + t.closePath(), + t.restore(), + e === !0 && t.clearRect(0, 0, i, o) + } + } + }, { + key: "_resizeNodes", + value: function() { + var e = this.canvas.frame.canvas.getContext("2d"); + void 0 === this.pixelRatio && (this.pixelRatio = (window.devicePixelRatio || 1) / (e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1)), + e.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0), + e.save(), + e.translate(this.body.view.translation.x, this.body.view.translation.y), + e.scale(this.body.view.scale, this.body.view.scale); + var t = this.body.nodes + , i = void 0; + for (var o in t) + t.hasOwnProperty(o) && (i = t[o], + i.resize(e), + i.updateBoundingBox(e, i.selected)); + e.restore() + } + }, { + key: "_drawNodes", + value: function(e) { + for (var t = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1], i = this.body.nodes, o = this.body.nodeIndices, n = void 0, s = [], r = 20, a = this.canvas.DOMtoCanvas({ + x: -r, + y: -r + }), h = this.canvas.DOMtoCanvas({ + x: this.canvas.frame.canvas.clientWidth + r, + y: this.canvas.frame.canvas.clientHeight + r + }), d = { + top: a.y, + left: a.x, + bottom: h.y, + right: h.x + }, l = 0; l < o.length; l++) + n = i[o[l]], + n.isSelected() ? s.push(o[l]) : t === !0 ? n.draw(e) : n.isBoundingBoxOverlappingWith(d) === !0 ? n.draw(e) : n.updateBoundingBox(e, n.selected); + for (var c = 0; c < s.length; c++) + n = i[s[c]], + n.draw(e) + } + }, { + key: "_drawEdges", + value: function(e) { + for (var t = this.body.edges, i = this.body.edgeIndices, o = void 0, n = 0; n < i.length; n++) + o = t[i[n]], + o.connected === !0 && o.draw(e) + } + }, { + key: "_determineBrowserMethod", + value: function() { + if ("undefined" != typeof window) { + var e = navigator.userAgent.toLowerCase(); + this.requiresTimeout = !1, + -1 != e.indexOf("msie 9.0") ? this.requiresTimeout = !0 : -1 != e.indexOf("safari") && e.indexOf("chrome") <= -1 && (this.requiresTimeout = !0) + } else + this.requiresTimeout = !0 + } + }]), + e + }(); + t["default"] = r + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = i(58) + , r = i(61) + , a = i(1) + , h = function() { + function e(t) { + o(this, e), + this.body = t, + this.pixelRatio = 1, + this.resizeTimer = void 0, + this.resizeFunction = this._onResize.bind(this), + this.cameraState = {}, + this.initialized = !1, + this.options = {}, + this.defaultOptions = { + autoResize: !0, + height: "100%", + width: "100%" + }, + a.extend(this.options, this.defaultOptions), + this.bindEventListeners() + } + return n(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.once("resize", function(t) { + 0 !== t.width && (e.body.view.translation.x = .5 * t.width), + 0 !== t.height && (e.body.view.translation.y = .5 * t.height) + }), + this.body.emitter.on("setSize", this.setSize.bind(this)), + this.body.emitter.on("destroy", function() { + e.hammerFrame.destroy(), + e.hammer.destroy(), + e._cleanUp() + }) + } + }, { + key: "setOptions", + value: function(e) { + var t = this; + if (void 0 !== e) { + var i = ["width", "height", "autoResize"]; + a.selectiveDeepExtend(i, this.options, e) + } + this.options.autoResize === !0 && (this._cleanUp(), + this.resizeTimer = setInterval(function() { + var e = t.setSize(); + e === !0 && t.body.emitter.emit("_requestRedraw") + }, 1e3), + this.resizeFunction = this._onResize.bind(this), + a.addEventListener(window, "resize", this.resizeFunction)) + } + }, { + key: "_cleanUp", + value: function() { + void 0 !== this.resizeTimer && clearInterval(this.resizeTimer), + a.removeEventListener(window, "resize", this.resizeFunction), + this.resizeFunction = void 0 + } + }, { + key: "_onResize", + value: function() { + this.setSize(), + this.body.emitter.emit("_redraw") + } + }, { + key: "_getCameraState", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? this.pixelRatio : arguments[0]; + this.initialized === !0 && (this.cameraState.previousWidth = this.frame.canvas.width / e, + this.cameraState.previousHeight = this.frame.canvas.height / e, + this.cameraState.scale = this.body.view.scale, + this.cameraState.position = this.DOMtoCanvas({ + x: .5 * this.frame.canvas.width / e, + y: .5 * this.frame.canvas.height / e + })) + } + }, { + key: "_setCameraState", + value: function() { + if (void 0 !== this.cameraState.scale && 0 !== this.frame.canvas.clientWidth && 0 !== this.frame.canvas.clientHeight && 0 !== this.pixelRatio && this.cameraState.previousWidth > 0) { + var e = this.frame.canvas.width / this.pixelRatio / this.cameraState.previousWidth + , t = this.frame.canvas.height / this.pixelRatio / this.cameraState.previousHeight + , i = this.cameraState.scale; + 1 != e && 1 != t ? i = .5 * this.cameraState.scale * (e + t) : 1 != e ? i = this.cameraState.scale * e : 1 != t && (i = this.cameraState.scale * t), + this.body.view.scale = i; + var o = this.DOMtoCanvas({ + x: .5 * this.frame.canvas.clientWidth, + y: .5 * this.frame.canvas.clientHeight + }) + , n = { + x: o.x - this.cameraState.position.x, + y: o.y - this.cameraState.position.y + }; + this.body.view.translation.x += n.x * this.body.view.scale, + this.body.view.translation.y += n.y * this.body.view.scale + } + } + }, { + key: "_prepareValue", + value: function(e) { + if ("number" == typeof e) + return e + "px"; + if ("string" == typeof e) { + if (-1 !== e.indexOf("%") || -1 !== e.indexOf("px")) + return e; + if (-1 === e.indexOf("%")) + return e + "px" + } + throw new Error("Could not use the value supplied for width or height:" + e) + } + }, { + key: "_create", + value: function() { + for (; this.body.container.hasChildNodes(); ) + this.body.container.removeChild(this.body.container.firstChild); + if (this.frame = document.createElement("div"), + this.frame.className = "vis-network", + this.frame.style.position = "relative", + this.frame.style.overflow = "hidden", + this.frame.tabIndex = 900, + this.frame.canvas = document.createElement("canvas"), + this.frame.canvas.style.position = "relative", + this.frame.appendChild(this.frame.canvas), + this.frame.canvas.getContext) { + var e = this.frame.canvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1), + this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0) + } else { + 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) + } + this.body.container.appendChild(this.frame), + this.body.view.scale = 1, + this.body.view.translation = { + x: .5 * this.frame.canvas.clientWidth, + y: .5 * this.frame.canvas.clientHeight + }, + this._bindHammer() + } + }, { + key: "_bindHammer", + value: function() { + var e = this; + void 0 !== this.hammer && this.hammer.destroy(), + this.drag = {}, + this.pinch = {}, + this.hammer = new s(this.frame.canvas), + this.hammer.get("pinch").set({ + enable: !0 + }), + this.hammer.get("pan").set({ + threshold: 5, + direction: s.DIRECTION_ALL + }), + r.onTouch(this.hammer, function(t) { + e.body.eventListeners.onTouch(t) + }), + this.hammer.on("tap", function(t) { + e.body.eventListeners.onTap(t) + }), + this.hammer.on("doubletap", function(t) { + e.body.eventListeners.onDoubleTap(t) + }), + this.hammer.on("press", function(t) { + e.body.eventListeners.onHold(t) + }), + this.hammer.on("panstart", function(t) { + e.body.eventListeners.onDragStart(t) + }), + this.hammer.on("panmove", function(t) { + e.body.eventListeners.onDrag(t) + }), + this.hammer.on("panend", function(t) { + e.body.eventListeners.onDragEnd(t) + }), + this.hammer.on("pinch", function(t) { + e.body.eventListeners.onPinch(t) + }), + this.frame.canvas.addEventListener("mousewheel", function(t) { + e.body.eventListeners.onMouseWheel(t) + }), + this.frame.canvas.addEventListener("DOMMouseScroll", function(t) { + e.body.eventListeners.onMouseWheel(t) + }), + this.frame.canvas.addEventListener("mousemove", function(t) { + e.body.eventListeners.onMouseMove(t) + }), + this.frame.canvas.addEventListener("contextmenu", function(t) { + e.body.eventListeners.onContext(t) + }), + this.hammerFrame = new s(this.frame), + r.onRelease(this.hammerFrame, function(t) { + e.body.eventListeners.onRelease(t) + }) + } + }, { + key: "setSize", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? this.options.width : arguments[0] + , t = arguments.length <= 1 || void 0 === arguments[1] ? this.options.height : arguments[1]; + e = this._prepareValue(e), + t = this._prepareValue(t); + var i = !1 + , o = this.frame.canvas.width + , n = this.frame.canvas.height + , s = this.frame.canvas.getContext("2d") + , r = this.pixelRatio; + return this.pixelRatio = (window.devicePixelRatio || 1) / (s.webkitBackingStorePixelRatio || s.mozBackingStorePixelRatio || s.msBackingStorePixelRatio || s.oBackingStorePixelRatio || s.backingStorePixelRatio || 1), + e != this.options.width || t != this.options.height || this.frame.style.width != e || this.frame.style.height != t ? (this._getCameraState(r), + this.frame.style.width = e, + this.frame.style.height = t, + this.frame.canvas.style.width = "100%", + this.frame.canvas.style.height = "100%", + this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio), + this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio), + this.options.width = e, + this.options.height = t, + i = !0) : (this.frame.canvas.width == Math.round(this.frame.canvas.clientWidth * this.pixelRatio) && this.frame.canvas.height == Math.round(this.frame.canvas.clientHeight * this.pixelRatio) || this._getCameraState(r), + this.frame.canvas.width != Math.round(this.frame.canvas.clientWidth * this.pixelRatio) && (this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio), + i = !0), + this.frame.canvas.height != Math.round(this.frame.canvas.clientHeight * this.pixelRatio) && (this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio), + i = !0)), + i === !0 && (this.body.emitter.emit("resize", { + width: Math.round(this.frame.canvas.width / this.pixelRatio), + height: Math.round(this.frame.canvas.height / this.pixelRatio), + oldWidth: Math.round(o / this.pixelRatio), + oldHeight: Math.round(n / this.pixelRatio) + }), + this._setCameraState()), + this.initialized = !0, + i + } + }, { + key: "_XconvertDOMtoCanvas", + value: function(e) { + return (e - this.body.view.translation.x) / this.body.view.scale + } + }, { + key: "_XconvertCanvasToDOM", + value: function(e) { + return e * this.body.view.scale + this.body.view.translation.x + } + }, { + key: "_YconvertDOMtoCanvas", + value: function(e) { + return (e - this.body.view.translation.y) / this.body.view.scale + } + }, { + key: "_YconvertCanvasToDOM", + value: function(e) { + return e * this.body.view.scale + this.body.view.translation.y + } + }, { + key: "canvasToDOM", + value: function(e) { + return { + x: this._XconvertCanvasToDOM(e.x), + y: this._YconvertCanvasToDOM(e.y) + } + } + }, { + key: "DOMtoCanvas", + value: function(e) { + return { + x: this._XconvertDOMtoCanvas(e.x), + y: this._YconvertDOMtoCanvas(e.y) + } + } + }]), + e + }(); + t["default"] = h + } + , function(e, t, i) { + if ("undefined" != typeof window) { + var o = i(59) + , n = window.Hammer || i(60); + e.exports = o(n, { + preventDefault: "mouse" + }) + } else + e.exports = function() { + throw Error("hammer.js is only available in a browser, not in node.js.") + } + } + , function(e, t, i) { + var o, n, s; + !function(i) { + n = [], + o = i, + s = "function" == typeof o ? o.apply(t, n) : o, + !(void 0 !== s && (e.exports = s)) + }(function() { + var e = null; + return function t(i, o) { + function n(e) { + return e.match(/[^ ]+/g) + } + function s(t) { + if ("hammer.input" !== t.type) { + if (t.srcEvent._handled || (t.srcEvent._handled = {}), + t.srcEvent._handled[t.type]) + return; + t.srcEvent._handled[t.type] = !0 + } + var i = !1; + t.stopPropagation = function() { + i = !0 + } + ; + var o = t.srcEvent.stopPropagation.bind(t.srcEvent); + "function" == typeof o && (t.srcEvent.stopPropagation = function() { + o(), + t.stopPropagation() + } + ), + t.firstTarget = e; + for (var n = e; n && !i; ) { + var s = n.hammer; + if (s) + for (var r, a = 0; a < s.length; a++) + if (r = s[a]._handlers[t.type]) + for (var h = 0; h < r.length && !i; h++) + r[h](t); + n = n.parentNode + } + } + var r = o || { + preventDefault: !1 + }; + if (i.Manager) { + var a = i + , h = function(e, i) { + var o = Object.create(r); + return i && a.assign(o, i), + t(new a(e,o), o) + }; + return a.assign(h, a), + h.Manager = function(e, i) { + var o = Object.create(r); + return i && a.assign(o, i), + t(new a.Manager(e,o), o) + } + , + h + } + var d = Object.create(i) + , l = i.element; + return l.hammer || (l.hammer = []), + l.hammer.push(d), + i.on("hammer.input", function(t) { + r.preventDefault !== !0 && r.preventDefault !== t.pointerType || t.preventDefault(), + t.isFirst && (e = t.target) + }), + d._handlers = {}, + d.on = function(e, t) { + return n(e).forEach(function(e) { + var o = d._handlers[e]; + o || (d._handlers[e] = o = [], + i.on(e, s)), + o.push(t) + }), + d + } + , + d.off = function(e, t) { + return n(e).forEach(function(e) { + var o = d._handlers[e]; + o && (o = t ? o.filter(function(e) { + return e !== t + }) : [], + o.length > 0 ? d._handlers[e] = o : (i.off(e, s), + delete d._handlers[e])) + }), + d + } + , + d.emit = function(t, o) { + e = o.target, + i.emit(t, o) + } + , + d.destroy = function() { + var e = i.element.hammer + , t = e.indexOf(d); + -1 !== t && e.splice(t, 1), + e.length || delete i.element.hammer, + d._handlers = {}, + i.destroy() + } + , + d + } + }) + } + , function(e, t, i) { + var o; + /*! Hammer.JS - v2.0.6 - 2015-12-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ + !function(n, s, r, a) { + function h(e, t, i) { + return setTimeout(f(e, i), t) + } + function d(e, t, i) { + return Array.isArray(e) ? (l(e, i[t], i), + !0) : !1 + } + function l(e, t, i) { + var o; + if (e) + if (e.forEach) + e.forEach(t, i); + else if (e.length !== a) + for (o = 0; o < e.length; ) + t.call(i, e[o], o, e), + o++; + else + for (o in e) + e.hasOwnProperty(o) && t.call(i, e[o], o, e) + } + function c(e, t, i) { + var o = "DEPRECATED METHOD: " + t + "\n" + i + " AT \n"; + return function() { + var t = new Error("get-stack-trace") + , i = t && t.stack ? t.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace" + , s = n.console && (n.console.warn || n.console.log); + return s && s.call(n.console, o, i), + e.apply(this, arguments) + } + } + function u(e, t, i) { + var o, n = t.prototype; + o = e.prototype = Object.create(n), + o.constructor = e, + o._super = n, + i && ce(o, i) + } + function f(e, t) { + return function() { + return e.apply(t, arguments) + } + } + function p(e, t) { + return typeof e == pe ? e.apply(t ? t[0] || a : a, t) : e + } + function v(e, t) { + return e === a ? t : e + } + function y(e, t, i) { + l(_(t), function(t) { + e.addEventListener(t, i, !1) + }) + } + function g(e, t, i) { + l(_(t), function(t) { + e.removeEventListener(t, i, !1) + }) + } + function b(e, t) { + for (; e; ) { + if (e == t) + return !0; + e = e.parentNode + } + return !1 + } + function m(e, t) { + return e.indexOf(t) > -1 + } + function _(e) { + return e.trim().split(/\s+/g) + } + function w(e, t, i) { + if (e.indexOf && !i) + return e.indexOf(t); + for (var o = 0; o < e.length; ) { + if (i && e[o][i] == t || !i && e[o] === t) + return o; + o++ + } + return -1 + } + function k(e) { + return Array.prototype.slice.call(e, 0) + } + function x(e, t, i) { + for (var o = [], n = [], s = 0; s < e.length; ) { + var r = t ? e[s][t] : e[s]; + w(n, r) < 0 && o.push(e[s]), + n[s] = r, + s++ + } + return i && (o = t ? o.sort(function(e, i) { + return e[t] > i[t] + }) : o.sort()), + o + } + function O(e, t) { + for (var i, o, n = t[0].toUpperCase() + t.slice(1), s = 0; s < ue.length; ) { + if (i = ue[s], + o = i ? i + n : t, + o in e) + return o; + s++ + } + return a + } + function E() { + return _e++ + } + function M(e) { + var t = e.ownerDocument || e; + return t.defaultView || t.parentWindow || n + } + function D(e, t) { + var i = this; + this.manager = e, + this.callback = t, + this.element = e.element, + this.target = e.options.inputTarget, + this.domHandler = function(t) { + p(e.options.enable, [e]) && i.handler(t) + } + , + this.init() + } + function S(e) { + var t, i = e.options.inputClass; + return new (t = i ? i : xe ? W : Oe ? V : ke ? G : H)(e,C) + } + function C(e, t, i) { + var o = i.pointers.length + , n = i.changedPointers.length + , s = t & Te && o - n === 0 + , r = t & (Be | Fe) && o - n === 0; + i.isFirst = !!s, + i.isFinal = !!r, + s && (e.session = {}), + i.eventType = t, + T(e, i), + e.emit("hammer.input", i), + e.recognize(i), + e.session.prevInput = i + } + function T(e, t) { + var i = e.session + , o = t.pointers + , n = o.length; + i.firstInput || (i.firstInput = F(t)), + n > 1 && !i.firstMultiple ? i.firstMultiple = F(t) : 1 === n && (i.firstMultiple = !1); + var s = i.firstInput + , r = i.firstMultiple + , a = r ? r.center : s.center + , h = t.center = I(o); + t.timeStamp = ge(), + t.deltaTime = t.timeStamp - s.timeStamp, + t.angle = R(a, h), + t.distance = z(a, h), + P(i, t), + t.offsetDirection = N(t.deltaX, t.deltaY); + var d = j(t.deltaTime, t.deltaX, t.deltaY); + t.overallVelocityX = d.x, + t.overallVelocityY = d.y, + t.overallVelocity = ye(d.x) > ye(d.y) ? d.x : d.y, + t.scale = r ? L(r.pointers, o) : 1, + t.rotation = r ? A(r.pointers, o) : 0, + t.maxPointers = i.prevInput ? t.pointers.length > i.prevInput.maxPointers ? t.pointers.length : i.prevInput.maxPointers : t.pointers.length, + B(i, t); + var l = e.element; + b(t.srcEvent.target, l) && (l = t.srcEvent.target), + t.target = l + } + function P(e, t) { + var i = t.center + , o = e.offsetDelta || {} + , n = e.prevDelta || {} + , s = e.prevInput || {}; + t.eventType !== Te && s.eventType !== Be || (n = e.prevDelta = { + x: s.deltaX || 0, + y: s.deltaY || 0 + }, + o = e.offsetDelta = { + x: i.x, + y: i.y + }), + t.deltaX = n.x + (i.x - o.x), + t.deltaY = n.y + (i.y - o.y) + } + function B(e, t) { + var i, o, n, s, r = e.lastInterval || t, h = t.timeStamp - r.timeStamp; + if (t.eventType != Fe && (h > Ce || r.velocity === a)) { + var d = t.deltaX - r.deltaX + , l = t.deltaY - r.deltaY + , c = j(h, d, l); + o = c.x, + n = c.y, + i = ye(c.x) > ye(c.y) ? c.x : c.y, + s = N(d, l), + e.lastInterval = t + } else + i = r.velocity, + o = r.velocityX, + n = r.velocityY, + s = r.direction; + t.velocity = i, + t.velocityX = o, + t.velocityY = n, + t.direction = s + } + function F(e) { + for (var t = [], i = 0; i < e.pointers.length; ) + t[i] = { + clientX: ve(e.pointers[i].clientX), + clientY: ve(e.pointers[i].clientY) + }, + i++; + return { + timeStamp: ge(), + pointers: t, + center: I(t), + deltaX: e.deltaX, + deltaY: e.deltaY + } + } + function I(e) { + var t = e.length; + if (1 === t) + return { + x: ve(e[0].clientX), + y: ve(e[0].clientY) + }; + for (var i = 0, o = 0, n = 0; t > n; ) + i += e[n].clientX, + o += e[n].clientY, + n++; + return { + x: ve(i / t), + y: ve(o / t) + } + } + function j(e, t, i) { + return { + x: t / e || 0, + y: i / e || 0 + } + } + function N(e, t) { + return e === t ? Ie : ye(e) >= ye(t) ? 0 > e ? je : Ne : 0 > t ? ze : Re + } + function z(e, t, i) { + i || (i = We); + var o = t[i[0]] - e[i[0]] + , n = t[i[1]] - e[i[1]]; + return Math.sqrt(o * o + n * n) + } + function R(e, t, i) { + i || (i = We); + var o = t[i[0]] - e[i[0]] + , n = t[i[1]] - e[i[1]]; + return 180 * Math.atan2(n, o) / Math.PI + } + function A(e, t) { + return R(t[1], t[0], Ye) + R(e[1], e[0], Ye) + } + function L(e, t) { + return z(t[0], t[1], Ye) / z(e[0], e[1], Ye) + } + function H() { + this.evEl = Ve, + this.evWin = qe, + this.allow = !0, + this.pressed = !1, + D.apply(this, arguments) + } + function W() { + this.evEl = Ke, + this.evWin = Ze, + D.apply(this, arguments), + this.store = this.manager.session.pointerEvents = [] + } + function Y() { + this.evTarget = Je, + this.evWin = $e, + this.started = !1, + D.apply(this, arguments) + } + function U(e, t) { + var i = k(e.touches) + , o = k(e.changedTouches); + return t & (Be | Fe) && (i = x(i.concat(o), "identifier", !0)), + [i, o] + } + function V() { + this.evTarget = tt, + this.targetIds = {}, + D.apply(this, arguments) + } + function q(e, t) { + var i = k(e.touches) + , o = this.targetIds; + if (t & (Te | Pe) && 1 === i.length) + return o[i[0].identifier] = !0, + [i, i]; + var n, s, r = k(e.changedTouches), a = [], h = this.target; + if (s = i.filter(function(e) { + return b(e.target, h) + }), + t === Te) + for (n = 0; n < s.length; ) + o[s[n].identifier] = !0, + n++; + for (n = 0; n < r.length; ) + o[r[n].identifier] && a.push(r[n]), + t & (Be | Fe) && delete o[r[n].identifier], + n++; + return a.length ? [x(s.concat(a), "identifier", !0), a] : void 0 + } + function G() { + D.apply(this, arguments); + var e = f(this.handler, this); + this.touch = new V(this.manager,e), + this.mouse = new H(this.manager,e) + } + function X(e, t) { + this.manager = e, + this.set(t) + } + function K(e) { + if (m(e, at)) + return at; + var t = m(e, ht) + , i = m(e, dt); + return t && i ? at : t || i ? t ? ht : dt : m(e, rt) ? rt : st + } + function Z(e) { + this.options = ce({}, this.defaults, e || {}), + this.id = E(), + this.manager = null, + this.options.enable = v(this.options.enable, !0), + this.state = lt, + this.simultaneous = {}, + this.requireFail = [] + } + function Q(e) { + return e & vt ? "cancel" : e & ft ? "end" : e & ut ? "move" : e & ct ? "start" : "" + } + function J(e) { + return e == Re ? "down" : e == ze ? "up" : e == je ? "left" : e == Ne ? "right" : "" + } + function $(e, t) { + var i = t.manager; + return i ? i.get(e) : e + } + function ee() { + Z.apply(this, arguments) + } + function te() { + ee.apply(this, arguments), + this.pX = null, + this.pY = null + } + function ie() { + ee.apply(this, arguments) + } + function oe() { + Z.apply(this, arguments), + this._timer = null, + this._input = null + } + function ne() { + ee.apply(this, arguments) + } + function se() { + ee.apply(this, arguments) + } + function re() { + Z.apply(this, arguments), + this.pTime = !1, + this.pCenter = !1, + this._timer = null, + this._input = null, + this.count = 0 + } + function ae(e, t) { + return t = t || {}, + t.recognizers = v(t.recognizers, ae.defaults.preset), + new he(e,t) + } + function he(e, t) { + this.options = ce({}, ae.defaults, t || {}), + this.options.inputTarget = this.options.inputTarget || e, + this.handlers = {}, + this.session = {}, + this.recognizers = [], + this.element = e, + this.input = S(this), + this.touchAction = new X(this,this.options.touchAction), + de(this, !0), + l(this.options.recognizers, function(e) { + var t = this.add(new e[0](e[1])); + e[2] && t.recognizeWith(e[2]), + e[3] && t.requireFailure(e[3]) + }, this) + } + function de(e, t) { + var i = e.element; + i.style && l(e.options.cssProps, function(e, o) { + i.style[O(i.style, o)] = t ? e : "" + }) + } + function le(e, t) { + var i = s.createEvent("Event"); + i.initEvent(e, !0, !0), + i.gesture = t, + t.target.dispatchEvent(i) + } + var ce, ue = ["", "webkit", "Moz", "MS", "ms", "o"], fe = s.createElement("div"), pe = "function", ve = Math.round, ye = Math.abs, ge = Date.now; + ce = "function" != typeof Object.assign ? function(e) { + if (e === a || null === e) + throw new TypeError("Cannot convert undefined or null to object"); + for (var t = Object(e), i = 1; i < arguments.length; i++) { + var o = arguments[i]; + if (o !== a && null !== o) + for (var n in o) + o.hasOwnProperty(n) && (t[n] = o[n]) + } + return t + } + : Object.assign; + var be = c(function(e, t, i) { + for (var o = Object.keys(t), n = 0; n < o.length; ) + (!i || i && e[o[n]] === a) && (e[o[n]] = t[o[n]]), + n++; + return e + }, "extend", "Use `assign`.") + , me = c(function(e, t) { + return be(e, t, !0) + }, "merge", "Use `assign`.") + , _e = 1 + , we = /mobile|tablet|ip(ad|hone|od)|android/i + , ke = "ontouchstart"in n + , xe = O(n, "PointerEvent") !== a + , Oe = ke && we.test(navigator.userAgent) + , Ee = "touch" + , Me = "pen" + , De = "mouse" + , Se = "kinect" + , Ce = 25 + , Te = 1 + , Pe = 2 + , Be = 4 + , Fe = 8 + , Ie = 1 + , je = 2 + , Ne = 4 + , ze = 8 + , Re = 16 + , Ae = je | Ne + , Le = ze | Re + , He = Ae | Le + , We = ["x", "y"] + , Ye = ["clientX", "clientY"]; + D.prototype = { + handler: function() {}, + init: function() { + this.evEl && y(this.element, this.evEl, this.domHandler), + this.evTarget && y(this.target, this.evTarget, this.domHandler), + this.evWin && y(M(this.element), this.evWin, this.domHandler) + }, + destroy: function() { + this.evEl && g(this.element, this.evEl, this.domHandler), + this.evTarget && g(this.target, this.evTarget, this.domHandler), + this.evWin && g(M(this.element), this.evWin, this.domHandler) + } + }; + var Ue = { + mousedown: Te, + mousemove: Pe, + mouseup: Be + } + , Ve = "mousedown" + , qe = "mousemove mouseup"; + u(H, D, { + handler: function(e) { + var t = Ue[e.type]; + t & Te && 0 === e.button && (this.pressed = !0), + t & Pe && 1 !== e.which && (t = Be), + this.pressed && this.allow && (t & Be && (this.pressed = !1), + this.callback(this.manager, t, { + pointers: [e], + changedPointers: [e], + pointerType: De, + srcEvent: e + })) + } + }); + var Ge = { + pointerdown: Te, + pointermove: Pe, + pointerup: Be, + pointercancel: Fe, + pointerout: Fe + } + , Xe = { + 2: Ee, + 3: Me, + 4: De, + 5: Se + } + , Ke = "pointerdown" + , Ze = "pointermove pointerup pointercancel"; + n.MSPointerEvent && !n.PointerEvent && (Ke = "MSPointerDown", + Ze = "MSPointerMove MSPointerUp MSPointerCancel"), + u(W, D, { + handler: function(e) { + var t = this.store + , i = !1 + , o = e.type.toLowerCase().replace("ms", "") + , n = Ge[o] + , s = Xe[e.pointerType] || e.pointerType + , r = s == Ee + , a = w(t, e.pointerId, "pointerId"); + n & Te && (0 === e.button || r) ? 0 > a && (t.push(e), + a = t.length - 1) : n & (Be | Fe) && (i = !0), + 0 > a || (t[a] = e, + this.callback(this.manager, n, { + pointers: t, + changedPointers: [e], + pointerType: s, + srcEvent: e + }), + i && t.splice(a, 1)) + } + }); + var Qe = { + touchstart: Te, + touchmove: Pe, + touchend: Be, + touchcancel: Fe + } + , Je = "touchstart" + , $e = "touchstart touchmove touchend touchcancel"; + u(Y, D, { + handler: function(e) { + var t = Qe[e.type]; + if (t === Te && (this.started = !0), + this.started) { + var i = U.call(this, e, t); + t & (Be | Fe) && i[0].length - i[1].length === 0 && (this.started = !1), + this.callback(this.manager, t, { + pointers: i[0], + changedPointers: i[1], + pointerType: Ee, + srcEvent: e + }) + } + } + }); + var et = { + touchstart: Te, + touchmove: Pe, + touchend: Be, + touchcancel: Fe + } + , tt = "touchstart touchmove touchend touchcancel"; + u(V, D, { + handler: function(e) { + var t = et[e.type] + , i = q.call(this, e, t); + i && this.callback(this.manager, t, { + pointers: i[0], + changedPointers: i[1], + pointerType: Ee, + srcEvent: e + }) + } + }), + u(G, D, { + handler: function(e, t, i) { + var o = i.pointerType == Ee + , n = i.pointerType == De; + if (o) + this.mouse.allow = !1; + else if (n && !this.mouse.allow) + return; + t & (Be | Fe) && (this.mouse.allow = !0), + this.callback(e, t, i) + }, + destroy: function() { + this.touch.destroy(), + this.mouse.destroy() + } + }); + var it = O(fe.style, "touchAction") + , ot = it !== a + , nt = "compute" + , st = "auto" + , rt = "manipulation" + , at = "none" + , ht = "pan-x" + , dt = "pan-y"; + X.prototype = { + set: function(e) { + e == nt && (e = this.compute()), + ot && this.manager.element.style && (this.manager.element.style[it] = e), + this.actions = e.toLowerCase().trim() + }, + update: function() { + this.set(this.manager.options.touchAction) + }, + compute: function() { + var e = []; + return l(this.manager.recognizers, function(t) { + p(t.options.enable, [t]) && (e = e.concat(t.getTouchAction())) + }), + K(e.join(" ")) + }, + preventDefaults: function(e) { + if (!ot) { + var t = e.srcEvent + , i = e.offsetDirection; + if (this.manager.session.prevented) + return void t.preventDefault(); + var o = this.actions + , n = m(o, at) + , s = m(o, dt) + , r = m(o, ht); + if (n) { + var a = 1 === e.pointers.length + , h = e.distance < 2 + , d = e.deltaTime < 250; + if (a && h && d) + return + } + if (!r || !s) + return n || s && i & Ae || r && i & Le ? this.preventSrc(t) : void 0 + } + }, + preventSrc: function(e) { + this.manager.session.prevented = !0, + e.preventDefault() + } + }; + var lt = 1 + , ct = 2 + , ut = 4 + , ft = 8 + , pt = ft + , vt = 16 + , yt = 32; + Z.prototype = { + defaults: {}, + set: function(e) { + return ce(this.options, e), + this.manager && this.manager.touchAction.update(), + this + }, + recognizeWith: function(e) { + if (d(e, "recognizeWith", this)) + return this; + var t = this.simultaneous; + return e = $(e, this), + t[e.id] || (t[e.id] = e, + e.recognizeWith(this)), + this + }, + dropRecognizeWith: function(e) { + return d(e, "dropRecognizeWith", this) ? this : (e = $(e, this), + delete this.simultaneous[e.id], + this) + }, + requireFailure: function(e) { + if (d(e, "requireFailure", this)) + return this; + var t = this.requireFail; + return e = $(e, this), + -1 === w(t, e) && (t.push(e), + e.requireFailure(this)), + this + }, + dropRequireFailure: function(e) { + if (d(e, "dropRequireFailure", this)) + return this; + e = $(e, this); + var t = w(this.requireFail, e); + return t > -1 && this.requireFail.splice(t, 1), + this + }, + hasRequireFailures: function() { + return this.requireFail.length > 0 + }, + canRecognizeWith: function(e) { + return !!this.simultaneous[e.id] + }, + emit: function(e) { + function t(t) { + i.manager.emit(t, e) + } + var i = this + , o = this.state; + ft > o && t(i.options.event + Q(o)), + t(i.options.event), + e.additionalEvent && t(e.additionalEvent), + o >= ft && t(i.options.event + Q(o)) + }, + tryEmit: function(e) { + return this.canEmit() ? this.emit(e) : void (this.state = yt) + }, + canEmit: function() { + for (var e = 0; e < this.requireFail.length; ) { + if (!(this.requireFail[e].state & (yt | lt))) + return !1; + e++ + } + return !0 + }, + recognize: function(e) { + var t = ce({}, e); + return p(this.options.enable, [this, t]) ? (this.state & (pt | vt | yt) && (this.state = lt), + this.state = this.process(t), + void (this.state & (ct | ut | ft | vt) && this.tryEmit(t))) : (this.reset(), + void (this.state = yt)) + }, + process: function(e) {}, + getTouchAction: function() {}, + reset: function() {} + }, + u(ee, Z, { + defaults: { + pointers: 1 + }, + attrTest: function(e) { + var t = this.options.pointers; + return 0 === t || e.pointers.length === t + }, + process: function(e) { + var t = this.state + , i = e.eventType + , o = t & (ct | ut) + , n = this.attrTest(e); + return o && (i & Fe || !n) ? t | vt : o || n ? i & Be ? t | ft : t & ct ? t | ut : ct : yt + } + }), + u(te, ee, { + defaults: { + event: "pan", + threshold: 10, + pointers: 1, + direction: He + }, + getTouchAction: function() { + var e = this.options.direction + , t = []; + return e & Ae && t.push(dt), + e & Le && t.push(ht), + t + }, + directionTest: function(e) { + var t = this.options + , i = !0 + , o = e.distance + , n = e.direction + , s = e.deltaX + , r = e.deltaY; + return n & t.direction || (t.direction & Ae ? (n = 0 === s ? Ie : 0 > s ? je : Ne, + i = s != this.pX, + o = Math.abs(e.deltaX)) : (n = 0 === r ? Ie : 0 > r ? ze : Re, + i = r != this.pY, + o = Math.abs(e.deltaY))), + e.direction = n, + i && o > t.threshold && n & t.direction + }, + attrTest: function(e) { + return ee.prototype.attrTest.call(this, e) && (this.state & ct || !(this.state & ct) && this.directionTest(e)) + }, + emit: function(e) { + this.pX = e.deltaX, + this.pY = e.deltaY; + var t = J(e.direction); + t && (e.additionalEvent = this.options.event + t), + this._super.emit.call(this, e) + } + }), + u(ie, ee, { + defaults: { + event: "pinch", + threshold: 0, + pointers: 2 + }, + getTouchAction: function() { + return [at] + }, + attrTest: function(e) { + return this._super.attrTest.call(this, e) && (Math.abs(e.scale - 1) > this.options.threshold || this.state & ct) + }, + emit: function(e) { + if (1 !== e.scale) { + var t = e.scale < 1 ? "in" : "out"; + e.additionalEvent = this.options.event + t + } + this._super.emit.call(this, e) + } + }), + u(oe, Z, { + defaults: { + event: "press", + pointers: 1, + time: 251, + threshold: 9 + }, + getTouchAction: function() { + return [st] + }, + process: function(e) { + var t = this.options + , i = e.pointers.length === t.pointers + , o = e.distance < t.threshold + , n = e.deltaTime > t.time; + if (this._input = e, + !o || !i || e.eventType & (Be | Fe) && !n) + this.reset(); + else if (e.eventType & Te) + this.reset(), + this._timer = h(function() { + this.state = pt, + this.tryEmit() + }, t.time, this); + else if (e.eventType & Be) + return pt; + return yt + }, + reset: function() { + clearTimeout(this._timer) + }, + emit: function(e) { + this.state === pt && (e && e.eventType & Be ? this.manager.emit(this.options.event + "up", e) : (this._input.timeStamp = ge(), + this.manager.emit(this.options.event, this._input))) + } + }), + u(ne, ee, { + defaults: { + event: "rotate", + threshold: 0, + pointers: 2 + }, + getTouchAction: function() { + return [at] + }, + attrTest: function(e) { + return this._super.attrTest.call(this, e) && (Math.abs(e.rotation) > this.options.threshold || this.state & ct) + } + }), + u(se, ee, { + defaults: { + event: "swipe", + threshold: 10, + velocity: .3, + direction: Ae | Le, + pointers: 1 + }, + getTouchAction: function() { + return te.prototype.getTouchAction.call(this) + }, + attrTest: function(e) { + var t, i = this.options.direction; + return i & (Ae | Le) ? t = e.overallVelocity : i & Ae ? t = e.overallVelocityX : i & Le && (t = e.overallVelocityY), + this._super.attrTest.call(this, e) && i & e.offsetDirection && e.distance > this.options.threshold && e.maxPointers == this.options.pointers && ye(t) > this.options.velocity && e.eventType & Be + }, + emit: function(e) { + var t = J(e.offsetDirection); + t && this.manager.emit(this.options.event + t, e), + this.manager.emit(this.options.event, e) + } + }), + u(re, Z, { + defaults: { + event: "tap", + pointers: 1, + taps: 1, + interval: 300, + time: 250, + threshold: 9, + posThreshold: 10 + }, + getTouchAction: function() { + return [rt] + }, + process: function(e) { + var t = this.options + , i = e.pointers.length === t.pointers + , o = e.distance < t.threshold + , n = e.deltaTime < t.time; + if (this.reset(), + e.eventType & Te && 0 === this.count) + return this.failTimeout(); + if (o && n && i) { + if (e.eventType != Be) + return this.failTimeout(); + var s = this.pTime ? e.timeStamp - this.pTime < t.interval : !0 + , r = !this.pCenter || z(this.pCenter, e.center) < t.posThreshold; + this.pTime = e.timeStamp, + this.pCenter = e.center, + r && s ? this.count += 1 : this.count = 1, + this._input = e; + var a = this.count % t.taps; + if (0 === a) + return this.hasRequireFailures() ? (this._timer = h(function() { + this.state = pt, + this.tryEmit() + }, t.interval, this), + ct) : pt + } + return yt + }, + failTimeout: function() { + return this._timer = h(function() { + this.state = yt + }, this.options.interval, this), + yt + }, + reset: function() { + clearTimeout(this._timer) + }, + emit: function() { + this.state == pt && (this._input.tapCount = this.count, + this.manager.emit(this.options.event, this._input)) + } + }), + ae.VERSION = "2.0.6", + ae.defaults = { + domEvents: !1, + touchAction: nt, + enable: !0, + inputTarget: null, + inputClass: null, + preset: [[ne, { + enable: !1 + }], [ie, { + enable: !1 + }, ["rotate"]], [se, { + direction: Ae + }], [te, { + direction: Ae + }, ["swipe"]], [re], [re, { + event: "doubletap", + taps: 2 + }, ["tap"]], [oe]], + cssProps: { + userSelect: "none", + touchSelect: "none", + touchCallout: "none", + contentZooming: "none", + userDrag: "none", + tapHighlightColor: "rgba(0,0,0,0)" + } + }; + var gt = 1 + , bt = 2; + he.prototype = { + set: function(e) { + return ce(this.options, e), + e.touchAction && this.touchAction.update(), + e.inputTarget && (this.input.destroy(), + this.input.target = e.inputTarget, + this.input.init()), + this + }, + stop: function(e) { + this.session.stopped = e ? bt : gt + }, + recognize: function(e) { + var t = this.session; + if (!t.stopped) { + this.touchAction.preventDefaults(e); + var i, o = this.recognizers, n = t.curRecognizer; + (!n || n && n.state & pt) && (n = t.curRecognizer = null); + for (var s = 0; s < o.length; ) + i = o[s], + t.stopped === bt || n && i != n && !i.canRecognizeWith(n) ? i.reset() : i.recognize(e), + !n && i.state & (ct | ut | ft) && (n = t.curRecognizer = i), + s++ + } + }, + get: function(e) { + if (e instanceof Z) + return e; + for (var t = this.recognizers, i = 0; i < t.length; i++) + if (t[i].options.event == e) + return t[i]; + return null + }, + add: function(e) { + if (d(e, "add", this)) + return this; + var t = this.get(e.options.event); + return t && this.remove(t), + this.recognizers.push(e), + e.manager = this, + this.touchAction.update(), + e + }, + remove: function(e) { + if (d(e, "remove", this)) + return this; + if (e = this.get(e)) { + var t = this.recognizers + , i = w(t, e); + -1 !== i && (t.splice(i, 1), + this.touchAction.update()) + } + return this + }, + on: function(e, t) { + var i = this.handlers; + return l(_(e), function(e) { + i[e] = i[e] || [], + i[e].push(t) + }), + this + }, + off: function(e, t) { + var i = this.handlers; + return l(_(e), function(e) { + t ? i[e] && i[e].splice(w(i[e], t), 1) : delete i[e] + }), + this + }, + emit: function(e, t) { + this.options.domEvents && le(e, t); + var i = this.handlers[e] && this.handlers[e].slice(); + if (i && i.length) { + t.type = e, + t.preventDefault = function() { + t.srcEvent.preventDefault() + } + ; + for (var o = 0; o < i.length; ) + i[o](t), + o++ + } + }, + destroy: function() { + this.element && de(this, !1), + this.handlers = {}, + this.session = {}, + this.input.destroy(), + this.element = null + } + }, + ce(ae, { + INPUT_START: Te, + INPUT_MOVE: Pe, + INPUT_END: Be, + INPUT_CANCEL: Fe, + STATE_POSSIBLE: lt, + STATE_BEGAN: ct, + STATE_CHANGED: ut, + STATE_ENDED: ft, + STATE_RECOGNIZED: pt, + STATE_CANCELLED: vt, + STATE_FAILED: yt, + DIRECTION_NONE: Ie, + DIRECTION_LEFT: je, + DIRECTION_RIGHT: Ne, + DIRECTION_UP: ze, + DIRECTION_DOWN: Re, + DIRECTION_HORIZONTAL: Ae, + DIRECTION_VERTICAL: Le, + DIRECTION_ALL: He, + Manager: he, + Input: D, + TouchAction: X, + TouchInput: V, + MouseInput: H, + PointerEventInput: W, + TouchMouseInput: G, + SingleTouchInput: Y, + Recognizer: Z, + AttrRecognizer: ee, + Tap: re, + Pan: te, + Swipe: se, + Pinch: ie, + Rotate: ne, + Press: oe, + on: y, + off: g, + each: l, + merge: me, + extend: be, + assign: ce, + inherit: u, + bindFn: f, + prefixed: O + }); + var mt = "undefined" != typeof n ? n : "undefined" != typeof self ? self : {}; + mt.Hammer = ae, + o = function() { + return ae + } + .call(t, i, t, e), + !(o !== a && (e.exports = o)) + }(window, document, "Hammer") + } + , function(e, t, i) { + i(58); + t.onTouch = function(e, t) { + t.inputHandler = function(e) { + e.isFirst && t(e) + } + , + e.on("hammer.input", t.inputHandler) + } + , + t.onRelease = function(e, t) { + return t.inputHandler = function(e) { + e.isFinal && t(e) + } + , + e.on("hammer.input", t.inputHandler) + } + , + t.offTouch = function(e, t) { + e.off("hammer.input", t.inputHandler) + } + , + t.offRelease = t.offTouch, + t.disablePreventDefaultVertically = function(e) { + var t = "pan-y"; + return e.getTouchAction = function() { + return [t] + } + , + e + } + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(54) + , a = o(r) + , h = i(1) + , d = function() { + function e(t, i) { + var o = this; + n(this, e), + this.body = t, + this.canvas = i, + this.animationSpeed = 1 / this.renderRefreshRate, + this.animationEasingFunction = "easeInOutQuint", + this.easingTime = 0, + this.sourceScale = 0, + this.targetScale = 0, + this.sourceTranslation = 0, + this.targetTranslation = 0, + this.lockedOnNodeId = void 0, + this.lockedOnNodeOffset = void 0, + this.touchTime = 0, + this.viewFunction = void 0, + this.body.emitter.on("fit", this.fit.bind(this)), + this.body.emitter.on("animationFinished", function() { + o.body.emitter.emit("_stopRendering") + }), + this.body.emitter.on("unlockNode", this.releaseNode.bind(this)) + } + return s(e, [{ + key: "setOptions", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0]; + this.options = e + } + }, { + key: "fit", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? { + nodes: [] + } : arguments[0] + , t = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1] + , i = void 0 + , o = void 0; + if (void 0 !== e.nodes && 0 !== e.nodes.length || (e.nodes = this.body.nodeIndices), + t === !0) { + var n = 0; + for (var s in this.body.nodes) + if (this.body.nodes.hasOwnProperty(s)) { + var r = this.body.nodes[s]; + r.predefinedPosition === !0 && (n += 1) + } + if (n > .5 * this.body.nodeIndices.length) + return void this.fit(e, !1); + i = a["default"].getRange(this.body.nodes, e.nodes); + var h = this.body.nodeIndices.length; + o = 12.662 / (h + 7.4147) + .0964822; + var d = Math.min(this.canvas.frame.canvas.clientWidth / 600, this.canvas.frame.canvas.clientHeight / 600); + o *= d + } else { + this.body.emitter.emit("_resizeNodes"), + i = a["default"].getRange(this.body.nodes, e.nodes); + var l = 1.1 * Math.abs(i.maxX - i.minX) + , c = 1.1 * Math.abs(i.maxY - i.minY) + , u = this.canvas.frame.canvas.clientWidth / l + , f = this.canvas.frame.canvas.clientHeight / c; + o = f >= u ? u : f + } + o > 1 ? o = 1 : 0 === o && (o = 1); + var p = a["default"].findCenter(i) + , v = { + position: p, + scale: o, + animation: e.animation + }; + this.moveTo(v) + } + }, { + key: "focus", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]; + if (void 0 !== this.body.nodes[e]) { + var i = { + x: this.body.nodes[e].x, + y: this.body.nodes[e].y + }; + t.position = i, + t.lockedOnNode = e, + this.moveTo(t) + } else + console.log("Node: " + e + " cannot be found.") + } + }, { + key: "moveTo", + value: function(e) { + return void 0 === e ? void (e = {}) : (void 0 === e.offset && (e.offset = { + x: 0, + y: 0 + }), + void 0 === e.offset.x && (e.offset.x = 0), + void 0 === e.offset.y && (e.offset.y = 0), + void 0 === e.scale && (e.scale = this.body.view.scale), + void 0 === e.position && (e.position = this.getViewPosition()), + void 0 === e.animation && (e.animation = { + duration: 0 + }), + e.animation === !1 && (e.animation = { + duration: 0 + }), + e.animation === !0 && (e.animation = {}), + void 0 === e.animation.duration && (e.animation.duration = 1e3), + void 0 === e.animation.easingFunction && (e.animation.easingFunction = "easeInOutQuad"), + void this.animateView(e)) + } + }, { + key: "animateView", + value: function(e) { + if (void 0 !== e) { + this.animationEasingFunction = e.animation.easingFunction, + this.releaseNode(), + e.locked === !0 && (this.lockedOnNodeId = e.lockedOnNode, + this.lockedOnNodeOffset = e.offset), + 0 != this.easingTime && this._transitionRedraw(!0), + this.sourceScale = this.body.view.scale, + this.sourceTranslation = this.body.view.translation, + this.targetScale = e.scale, + this.body.view.scale = this.targetScale; + var t = this.canvas.DOMtoCanvas({ + x: .5 * this.canvas.frame.canvas.clientWidth, + y: .5 * this.canvas.frame.canvas.clientHeight + }) + , i = { + x: t.x - e.position.x, + y: t.y - e.position.y + }; + this.targetTranslation = { + x: this.sourceTranslation.x + i.x * this.targetScale + e.offset.x, + y: this.sourceTranslation.y + i.y * this.targetScale + e.offset.y + }, + 0 === e.animation.duration ? void 0 != this.lockedOnNodeId ? (this.viewFunction = this._lockedRedraw.bind(this), + this.body.emitter.on("initRedraw", this.viewFunction)) : (this.body.view.scale = this.targetScale, + this.body.view.translation = this.targetTranslation, + this.body.emitter.emit("_requestRedraw")) : (this.animationSpeed = 1 / (60 * e.animation.duration * .001) || 1 / 60, + this.animationEasingFunction = e.animation.easingFunction, + this.viewFunction = this._transitionRedraw.bind(this), + this.body.emitter.on("initRedraw", this.viewFunction), + this.body.emitter.emit("_startRendering")) + } + } + }, { + key: "_lockedRedraw", + value: function() { + var e = { + x: this.body.nodes[this.lockedOnNodeId].x, + y: this.body.nodes[this.lockedOnNodeId].y + } + , t = this.canvas.DOMtoCanvas({ + x: .5 * this.canvas.frame.canvas.clientWidth, + y: .5 * this.canvas.frame.canvas.clientHeight + }) + , i = { + x: t.x - e.x, + y: t.y - e.y + } + , o = this.body.view.translation + , n = { + x: o.x + i.x * this.body.view.scale + this.lockedOnNodeOffset.x, + y: o.y + i.y * this.body.view.scale + this.lockedOnNodeOffset.y + }; + this.body.view.translation = n + } + }, { + key: "releaseNode", + value: function() { + void 0 !== this.lockedOnNodeId && void 0 !== this.viewFunction && (this.body.emitter.off("initRedraw", this.viewFunction), + this.lockedOnNodeId = void 0, + this.lockedOnNodeOffset = void 0) + } + }, { + key: "_transitionRedraw", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? !1 : arguments[0]; + this.easingTime += this.animationSpeed, + this.easingTime = e === !0 ? 1 : this.easingTime; + var t = h.easingFunctions[this.animationEasingFunction](this.easingTime); + this.body.view.scale = this.sourceScale + (this.targetScale - this.sourceScale) * t, + this.body.view.translation = { + x: this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * t, + y: this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * t + }, + this.easingTime >= 1 && (this.body.emitter.off("initRedraw", this.viewFunction), + this.easingTime = 0, + void 0 != this.lockedOnNodeId && (this.viewFunction = this._lockedRedraw.bind(this), + this.body.emitter.on("initRedraw", this.viewFunction)), + this.body.emitter.emit("animationFinished")) + } + }, { + key: "getScale", + value: function() { + return this.body.view.scale + } + }, { + key: "getViewPosition", + value: function() { + return this.canvas.DOMtoCanvas({ + x: .5 * this.canvas.frame.canvas.clientWidth, + y: .5 * this.canvas.frame.canvas.clientHeight + }) + } + }]), + e + }(); + t["default"] = d + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(64) + , a = o(r) + , h = i(66) + , d = o(h) + , l = i(1) + , c = function() { + function e(t, i, o) { + n(this, e), + this.body = t, + this.canvas = i, + this.selectionHandler = o, + this.navigationHandler = new a["default"](t,i), + this.body.eventListeners.onTap = this.onTap.bind(this), + this.body.eventListeners.onTouch = this.onTouch.bind(this), + this.body.eventListeners.onDoubleTap = this.onDoubleTap.bind(this), + this.body.eventListeners.onHold = this.onHold.bind(this), + this.body.eventListeners.onDragStart = this.onDragStart.bind(this), + this.body.eventListeners.onDrag = this.onDrag.bind(this), + this.body.eventListeners.onDragEnd = this.onDragEnd.bind(this), + this.body.eventListeners.onMouseWheel = this.onMouseWheel.bind(this), + this.body.eventListeners.onPinch = this.onPinch.bind(this), + this.body.eventListeners.onMouseMove = this.onMouseMove.bind(this), + this.body.eventListeners.onRelease = this.onRelease.bind(this), + this.body.eventListeners.onContext = this.onContext.bind(this), + this.touchTime = 0, + this.drag = {}, + this.pinch = {}, + this.popup = void 0, + this.popupObj = void 0, + this.popupTimer = void 0, + this.body.functions.getPointer = this.getPointer.bind(this), + this.options = {}, + this.defaultOptions = { + dragNodes: !0, + dragView: !0, + hover: !1, + keyboard: { + enabled: !1, + speed: { + x: 10, + y: 10, + zoom: .02 + }, + bindToWindow: !0 + }, + navigationButtons: !1, + tooltipDelay: 300, + zoomView: !0 + }, + l.extend(this.options, this.defaultOptions), + this.bindEventListeners() + } + return s(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("destroy", function() { + clearTimeout(e.popupTimer), + delete e.body.functions.getPointer + }) + } + }, { + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + var t = ["hideEdgesOnDrag", "hideNodesOnDrag", "keyboard", "multiselect", "selectable", "selectConnectedEdges"]; + l.selectiveNotDeepExtend(t, this.options, e), + l.mergeOptions(this.options, e, "keyboard"), + e.tooltip && (l.extend(this.options.tooltip, e.tooltip), + e.tooltip.color && (this.options.tooltip.color = l.parseColor(e.tooltip.color))) + } + this.navigationHandler.setOptions(this.options) + } + }, { + key: "getPointer", + value: function(e) { + return { + x: e.x - l.getAbsoluteLeft(this.canvas.frame.canvas), + y: e.y - l.getAbsoluteTop(this.canvas.frame.canvas) + } + } + }, { + key: "onTouch", + value: function(e) { + (new Date).valueOf() - this.touchTime > 50 && (this.drag.pointer = this.getPointer(e.center), + this.drag.pinched = !1, + this.pinch.scale = this.body.view.scale, + this.touchTime = (new Date).valueOf()) + } + }, { + key: "onTap", + value: function(e) { + var t = this.getPointer(e.center) + , i = this.selectionHandler.options.multiselect && (e.changedPointers[0].ctrlKey || e.changedPointers[0].metaKey); + this.checkSelectionChanges(t, e, i), + this.selectionHandler._generateClickEvent("click", e, t) + } + }, { + key: "onDoubleTap", + value: function(e) { + var t = this.getPointer(e.center); + this.selectionHandler._generateClickEvent("doubleClick", e, t) + } + }, { + key: "onHold", + value: function(e) { + var t = this.getPointer(e.center) + , i = this.selectionHandler.options.multiselect; + this.checkSelectionChanges(t, e, i), + this.selectionHandler._generateClickEvent("click", e, t), + this.selectionHandler._generateClickEvent("hold", e, t) + } + }, { + key: "onRelease", + value: function(e) { + if ((new Date).valueOf() - this.touchTime > 10) { + var t = this.getPointer(e.center); + this.selectionHandler._generateClickEvent("release", e, t), + this.touchTime = (new Date).valueOf() + } + } + }, { + key: "onContext", + value: function(e) { + var t = this.getPointer({ + x: e.clientX, + y: e.clientY + }); + this.selectionHandler._generateClickEvent("oncontext", e, t) + } + }, { + key: "checkSelectionChanges", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = this.selectionHandler._getSelectedEdgeCount() + , n = this.selectionHandler._getSelectedNodeCount() + , s = this.selectionHandler.getSelection() + , r = void 0; + r = i === !0 ? this.selectionHandler.selectAdditionalOnPoint(e) : this.selectionHandler.selectOnPoint(e); + var a = this.selectionHandler._getSelectedEdgeCount() + , h = this.selectionHandler._getSelectedNodeCount() + , d = this.selectionHandler.getSelection() + , l = this._determineIfDifferent(s, d) + , c = l.nodesChanged + , u = l.edgesChanged + , f = !1; + h - n > 0 ? (this.selectionHandler._generateClickEvent("selectNode", t, e), + r = !0, + f = !0) : c === !0 && h > 0 ? (this.selectionHandler._generateClickEvent("deselectNode", t, e, s), + this.selectionHandler._generateClickEvent("selectNode", t, e), + f = !0, + r = !0) : 0 > h - n && (this.selectionHandler._generateClickEvent("deselectNode", t, e, s), + r = !0), + a - o > 0 && f === !1 ? (this.selectionHandler._generateClickEvent("selectEdge", t, e), + r = !0) : a > 0 && u === !0 ? (this.selectionHandler._generateClickEvent("deselectEdge", t, e, s), + this.selectionHandler._generateClickEvent("selectEdge", t, e), + r = !0) : 0 > a - o && (this.selectionHandler._generateClickEvent("deselectEdge", t, e, s), + r = !0), + r === !0 && this.selectionHandler._generateClickEvent("select", t, e) + } + }, { + key: "_determineIfDifferent", + value: function(e, t) { + for (var i = !1, o = !1, n = 0; n < e.nodes.length; n++) + -1 === t.nodes.indexOf(e.nodes[n]) && (i = !0); + for (var s = 0; s < t.nodes.length; s++) + -1 === e.nodes.indexOf(e.nodes[s]) && (i = !0); + for (var r = 0; r < e.edges.length; r++) + -1 === t.edges.indexOf(e.edges[r]) && (o = !0); + for (var a = 0; a < t.edges.length; a++) + -1 === e.edges.indexOf(e.edges[a]) && (o = !0); + return { + nodesChanged: i, + edgesChanged: o + } + } + }, { + key: "onDragStart", + value: function(e) { + void 0 === this.drag.pointer && this.onTouch(e); + var t = this.selectionHandler.getNodeAt(this.drag.pointer); + if (this.drag.dragging = !0, + this.drag.selection = [], + this.drag.translation = l.extend({}, this.body.view.translation), + this.drag.nodeId = void 0, + void 0 !== t && this.options.dragNodes === !0) { + this.drag.nodeId = t.id, + t.isSelected() === !1 && (this.selectionHandler.unselectAll(), + this.selectionHandler.selectObject(t)), + this.selectionHandler._generateClickEvent("dragStart", e, this.drag.pointer); + var i = this.selectionHandler.selectionObj.nodes; + for (var o in i) + if (i.hasOwnProperty(o)) { + var n = i[o] + , s = { + id: n.id, + node: n, + x: n.x, + y: n.y, + xFixed: n.options.fixed.x, + yFixed: n.options.fixed.y + }; + n.options.fixed.x = !0, + n.options.fixed.y = !0, + this.drag.selection.push(s) + } + } else + this.selectionHandler._generateClickEvent("dragStart", e, this.drag.pointer, void 0, !0) + } + }, { + key: "onDrag", + value: function(e) { + var t = this; + if (this.drag.pinched !== !0) { + this.body.emitter.emit("unlockNode"); + var i = this.getPointer(e.center) + , o = this.drag.selection; + if (o && o.length && this.options.dragNodes === !0) + !function() { + t.selectionHandler._generateClickEvent("dragging", e, i); + var n = i.x - t.drag.pointer.x + , s = i.y - t.drag.pointer.y; + o.forEach(function(e) { + var i = e.node; + e.xFixed === !1 && (i.x = t.canvas._XconvertDOMtoCanvas(t.canvas._XconvertCanvasToDOM(e.x) + n)), + e.yFixed === !1 && (i.y = t.canvas._YconvertDOMtoCanvas(t.canvas._YconvertCanvasToDOM(e.y) + s)) + }), + t.body.emitter.emit("startSimulation") + }(); + else if (this.options.dragView === !0) { + if (this.selectionHandler._generateClickEvent("dragging", e, i, void 0, !0), + void 0 === this.drag.pointer) + return void this.onDragStart(e); + var n = i.x - this.drag.pointer.x + , s = i.y - this.drag.pointer.y; + this.body.view.translation = { + x: this.drag.translation.x + n, + y: this.drag.translation.y + s + }, + this.body.emitter.emit("_redraw") + } + } + } + }, { + key: "onDragEnd", + value: function(e) { + this.drag.dragging = !1; + var t = this.drag.selection; + t && t.length ? (t.forEach(function(e) { + e.node.options.fixed.x = e.xFixed, + e.node.options.fixed.y = e.yFixed + }), + this.selectionHandler._generateClickEvent("dragEnd", e, this.getPointer(e.center)), + this.body.emitter.emit("startSimulation")) : (this.selectionHandler._generateClickEvent("dragEnd", e, this.getPointer(e.center), void 0, !0), + this.body.emitter.emit("_requestRedraw")) + } + }, { + key: "onPinch", + value: function(e) { + var t = this.getPointer(e.center); + this.drag.pinched = !0, + void 0 === this.pinch.scale && (this.pinch.scale = 1); + var i = this.pinch.scale * e.scale; + this.zoom(i, t) + } + }, { + key: "zoom", + value: function(e, t) { + if (this.options.zoomView === !0) { + var i = this.body.view.scale; + 1e-5 > e && (e = 1e-5), + e > 10 && (e = 10); + var o = void 0; + void 0 !== this.drag && this.drag.dragging === !0 && (o = this.canvas.DOMtoCanvas(this.drag.pointer)); + var n = this.body.view.translation + , s = e / i + , r = (1 - s) * t.x + n.x * s + , a = (1 - s) * t.y + n.y * s; + if (this.body.view.scale = e, + this.body.view.translation = { + x: r, + y: a + }, + void 0 != o) { + var h = this.canvas.canvasToDOM(o); + this.drag.pointer.x = h.x, + this.drag.pointer.y = h.y + } + this.body.emitter.emit("_requestRedraw"), + e > i ? this.body.emitter.emit("zoom", { + direction: "+", + scale: this.body.view.scale + }) : this.body.emitter.emit("zoom", { + direction: "-", + scale: this.body.view.scale + }) + } + } + }, { + key: "onMouseWheel", + value: function(e) { + if (this.options.zoomView === !0) { + var t = 0; + if (e.wheelDelta ? t = e.wheelDelta / 120 : e.detail && (t = -e.detail / 3), + 0 !== t) { + var i = this.body.view.scale + , o = t / 10; + 0 > t && (o /= 1 - o), + i *= 1 + o; + var n = this.getPointer({ + x: e.clientX, + y: e.clientY + }); + this.zoom(i, n) + } + e.preventDefault() + } + } + }, { + key: "onMouseMove", + value: function(e) { + var t = this + , i = this.getPointer({ + x: e.clientX, + y: e.clientY + }) + , o = !1; + if (void 0 !== this.popup && (this.popup.hidden === !1 && this._checkHidePopup(i), + this.popup.hidden === !1 && (o = !0, + this.popup.setPosition(i.x + 3, i.y - 5), + this.popup.show())), + this.options.keyboard.bindToWindow === !1 && this.options.keyboard.enabled === !0 && this.canvas.frame.focus(), + o === !1 && (void 0 !== this.popupTimer && (clearInterval(this.popupTimer), + this.popupTimer = void 0), + this.drag.dragging || (this.popupTimer = setTimeout(function() { + return t._checkShowPopup(i) + }, this.options.tooltipDelay))), + this.options.hover === !0) { + var n = this.selectionHandler.getNodeAt(i); + void 0 === n && (n = this.selectionHandler.getEdgeAt(i)), + this.selectionHandler.hoverObject(n) + } + } + }, { + key: "_checkShowPopup", + value: function(e) { + var t = this.canvas._XconvertDOMtoCanvas(e.x) + , i = this.canvas._YconvertDOMtoCanvas(e.y) + , o = { + left: t, + top: i, + right: t, + bottom: i + } + , n = void 0 === this.popupObj ? void 0 : this.popupObj.id + , s = !1 + , r = "node"; + if (void 0 === this.popupObj) { + for (var a = this.body.nodeIndices, h = this.body.nodes, l = void 0, c = [], u = 0; u < a.length; u++) + l = h[a[u]], + l.isOverlappingWith(o) === !0 && void 0 !== l.getTitle() && c.push(a[u]); + c.length > 0 && (this.popupObj = h[c[c.length - 1]], + s = !0) + } + if (void 0 === this.popupObj && s === !1) { + for (var f = this.body.edgeIndices, p = this.body.edges, v = void 0, y = [], g = 0; g < f.length; g++) + v = p[f[g]], + v.isOverlappingWith(o) === !0 && v.connected === !0 && void 0 !== v.getTitle() && y.push(f[g]); + y.length > 0 && (this.popupObj = p[y[y.length - 1]], + r = "edge") + } + void 0 !== this.popupObj ? this.popupObj.id !== n && (void 0 === this.popup && (this.popup = new d["default"](this.canvas.frame)), + this.popup.popupTargetType = r, + this.popup.popupTargetId = this.popupObj.id, + this.popup.setPosition(e.x + 3, e.y - 5), + this.popup.setText(this.popupObj.getTitle()), + this.popup.show(), + this.body.emitter.emit("showPopup", this.popupObj.id)) : void 0 !== this.popup && (this.popup.hide(), + this.body.emitter.emit("hidePopup")) + } + }, { + key: "_checkHidePopup", + value: function(e) { + var t = this.selectionHandler._pointerToPositionObject(e) + , i = !1; + if ("node" === this.popup.popupTargetType) { + if (void 0 !== this.body.nodes[this.popup.popupTargetId] && (i = this.body.nodes[this.popup.popupTargetId].isOverlappingWith(t), + i === !0)) { + var o = this.selectionHandler.getNodeAt(e); + i = o.id === this.popup.popupTargetId + } + } else + void 0 === this.selectionHandler.getNodeAt(e) && void 0 !== this.body.edges[this.popup.popupTargetId] && (i = this.body.edges[this.popup.popupTargetId].isOverlappingWith(t)); + i === !1 && (this.popupObj = void 0, + this.popup.hide(), + this.body.emitter.emit("hidePopup")) + } + }]), + e + }(); + t["default"] = c + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = (i(1), + i(58)) + , r = i(61) + , a = i(65) + , h = function() { + function e(t, i) { + var n = this; + o(this, e), + this.body = t, + this.canvas = i, + this.iconsCreated = !1, + this.navigationHammers = [], + this.boundFunctions = {}, + this.touchTime = 0, + this.activated = !1, + this.body.emitter.on("activate", function() { + n.activated = !0, + n.configureKeyboardBindings() + }), + this.body.emitter.on("deactivate", function() { + n.activated = !1, + n.configureKeyboardBindings() + }), + this.body.emitter.on("destroy", function() { + void 0 !== n.keycharm && n.keycharm.destroy() + }), + this.options = {} + } + return n(e, [{ + key: "setOptions", + value: function(e) { + void 0 !== e && (this.options = e, + this.create()) + } + }, { + key: "create", + value: function() { + this.options.navigationButtons === !0 ? this.iconsCreated === !1 && this.loadNavigationElements() : this.iconsCreated === !0 && this.cleanNavigation(), + this.configureKeyboardBindings() + } + }, { + key: "cleanNavigation", + value: function() { + if (0 != this.navigationHammers.length) { + for (var e = 0; e < this.navigationHammers.length; e++) + this.navigationHammers[e].destroy(); + this.navigationHammers = [] + } + this.navigationDOM && this.navigationDOM.wrapper && this.navigationDOM.wrapper.parentNode && this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper), + this.iconsCreated = !1 + } + }, { + key: "loadNavigationElements", + value: function() { + var e = this; + this.cleanNavigation(), + this.navigationDOM = {}; + var t = ["up", "down", "left", "right", "zoomIn", "zoomOut", "zoomExtends"] + , i = ["_moveUp", "_moveDown", "_moveLeft", "_moveRight", "_zoomIn", "_zoomOut", "_fit"]; + this.navigationDOM.wrapper = document.createElement("div"), + this.navigationDOM.wrapper.className = "vis-navigation", + this.canvas.frame.appendChild(this.navigationDOM.wrapper); + for (var o = 0; o < t.length; o++) { + this.navigationDOM[t[o]] = document.createElement("div"), + this.navigationDOM[t[o]].className = "vis-button vis-" + t[o], + this.navigationDOM.wrapper.appendChild(this.navigationDOM[t[o]]); + var n = new s(this.navigationDOM[t[o]]); + "_fit" === i[o] ? r.onTouch(n, this._fit.bind(this)) : r.onTouch(n, this.bindToRedraw.bind(this, i[o])), + this.navigationHammers.push(n) + } + var a = new s(this.canvas.frame); + r.onRelease(a, function() { + e._stopMovement() + }), + this.navigationHammers.push(a), + this.iconsCreated = !0 + } + }, { + key: "bindToRedraw", + value: function(e) { + void 0 === this.boundFunctions[e] && (this.boundFunctions[e] = this[e].bind(this), + this.body.emitter.on("initRedraw", this.boundFunctions[e]), + this.body.emitter.emit("_startRendering")) + } + }, { + key: "unbindFromRedraw", + value: function(e) { + void 0 !== this.boundFunctions[e] && (this.body.emitter.off("initRedraw", this.boundFunctions[e]), + this.body.emitter.emit("_stopRendering"), + delete this.boundFunctions[e]) + } + }, { + key: "_fit", + value: function() { + (new Date).valueOf() - this.touchTime > 700 && (this.body.emitter.emit("fit", { + duration: 700 + }), + this.touchTime = (new Date).valueOf()) + } + }, { + key: "_stopMovement", + value: function() { + for (var e in this.boundFunctions) + this.boundFunctions.hasOwnProperty(e) && (this.body.emitter.off("initRedraw", this.boundFunctions[e]), + this.body.emitter.emit("_stopRendering")); + this.boundFunctions = {} + } + }, { + key: "_moveUp", + value: function() { + this.body.view.translation.y += this.options.keyboard.speed.y + } + }, { + key: "_moveDown", + value: function() { + this.body.view.translation.y -= this.options.keyboard.speed.y + } + }, { + key: "_moveLeft", + value: function() { + this.body.view.translation.x += this.options.keyboard.speed.x + } + }, { + key: "_moveRight", + value: function() { + this.body.view.translation.x -= this.options.keyboard.speed.x + } + }, { + key: "_zoomIn", + value: function() { + this.body.view.scale *= 1 + this.options.keyboard.speed.zoom, + this.body.emitter.emit("zoom", { + direction: "+", + scale: this.body.view.scale + }) + } + }, { + key: "_zoomOut", + value: function() { + this.body.view.scale /= 1 + this.options.keyboard.speed.zoom, + this.body.emitter.emit("zoom", { + direction: "-", + scale: this.body.view.scale + }) + } + }, { + key: "configureKeyboardBindings", + value: function() { + var e = this; + void 0 !== this.keycharm && this.keycharm.destroy(), + this.options.keyboard.enabled === !0 && (this.options.keyboard.bindToWindow === !0 ? this.keycharm = a({ + container: window, + preventDefault: !0 + }) : this.keycharm = a({ + container: this.canvas.frame, + preventDefault: !0 + }), + this.keycharm.reset(), + this.activated === !0 && (this.keycharm.bind("up", function() { + e.bindToRedraw("_moveUp") + }, "keydown"), + this.keycharm.bind("down", function() { + e.bindToRedraw("_moveDown") + }, "keydown"), + this.keycharm.bind("left", function() { + e.bindToRedraw("_moveLeft") + }, "keydown"), + this.keycharm.bind("right", function() { + e.bindToRedraw("_moveRight") + }, "keydown"), + this.keycharm.bind("=", function() { + e.bindToRedraw("_zoomIn") + }, "keydown"), + this.keycharm.bind("num+", function() { + e.bindToRedraw("_zoomIn") + }, "keydown"), + this.keycharm.bind("num-", function() { + e.bindToRedraw("_zoomOut") + }, "keydown"), + this.keycharm.bind("-", function() { + e.bindToRedraw("_zoomOut") + }, "keydown"), + this.keycharm.bind("[", function() { + e.bindToRedraw("_zoomOut") + }, "keydown"), + this.keycharm.bind("]", function() { + e.bindToRedraw("_zoomIn") + }, "keydown"), + this.keycharm.bind("pageup", function() { + e.bindToRedraw("_zoomIn") + }, "keydown"), + this.keycharm.bind("pagedown", function() { + e.bindToRedraw("_zoomOut") + }, "keydown"), + this.keycharm.bind("up", function() { + e.unbindFromRedraw("_moveUp") + }, "keyup"), + this.keycharm.bind("down", function() { + e.unbindFromRedraw("_moveDown") + }, "keyup"), + this.keycharm.bind("left", function() { + e.unbindFromRedraw("_moveLeft") + }, "keyup"), + this.keycharm.bind("right", function() { + e.unbindFromRedraw("_moveRight") + }, "keyup"), + this.keycharm.bind("=", function() { + e.unbindFromRedraw("_zoomIn") + }, "keyup"), + this.keycharm.bind("num+", function() { + e.unbindFromRedraw("_zoomIn") + }, "keyup"), + this.keycharm.bind("num-", function() { + e.unbindFromRedraw("_zoomOut") + }, "keyup"), + this.keycharm.bind("-", function() { + e.unbindFromRedraw("_zoomOut") + }, "keyup"), + this.keycharm.bind("[", function() { + e.unbindFromRedraw("_zoomOut") + }, "keyup"), + this.keycharm.bind("]", function() { + e.unbindFromRedraw("_zoomIn") + }, "keyup"), + this.keycharm.bind("pageup", function() { + e.unbindFromRedraw("_zoomIn") + }, "keyup"), + this.keycharm.bind("pagedown", function() { + e.unbindFromRedraw("_zoomOut") + }, "keyup"))) + } + }]), + e + }(); + t["default"] = h + } + , function(e, t, i) { + var o, n, s; + !function(i, r) { + n = [], + o = r, + s = "function" == typeof o ? o.apply(t, n) : o, + !(void 0 !== s && (e.exports = s)) + }(this, function() { + function e(e) { + var t, i = e && e.preventDefault || !1, o = e && e.container || window, n = {}, s = { + keydown: {}, + keyup: {} + }, r = {}; + for (t = 97; 122 >= t; t++) + r[String.fromCharCode(t)] = { + code: 65 + (t - 97), + shift: !1 + }; + for (t = 65; 90 >= t; t++) + r[String.fromCharCode(t)] = { + code: t, + shift: !0 + }; + for (t = 0; 9 >= t; t++) + r["" + t] = { + code: 48 + t, + shift: !1 + }; + for (t = 1; 12 >= t; t++) + r["F" + t] = { + code: 111 + t, + shift: !1 + }; + for (t = 0; 9 >= t; t++) + r["num" + t] = { + code: 96 + t, + shift: !1 + }; + r["num*"] = { + code: 106, + shift: !1 + }, + r["num+"] = { + code: 107, + shift: !1 + }, + r["num-"] = { + code: 109, + shift: !1 + }, + r["num/"] = { + code: 111, + shift: !1 + }, + r["num."] = { + code: 110, + shift: !1 + }, + r.left = { + code: 37, + shift: !1 + }, + r.up = { + code: 38, + shift: !1 + }, + r.right = { + code: 39, + shift: !1 + }, + r.down = { + code: 40, + shift: !1 + }, + r.space = { + code: 32, + shift: !1 + }, + r.enter = { + code: 13, + shift: !1 + }, + r.shift = { + code: 16, + shift: void 0 + }, + r.esc = { + code: 27, + shift: !1 + }, + r.backspace = { + code: 8, + shift: !1 + }, + r.tab = { + code: 9, + shift: !1 + }, + r.ctrl = { + code: 17, + shift: !1 + }, + r.alt = { + code: 18, + shift: !1 + }, + r["delete"] = { + code: 46, + shift: !1 + }, + r.pageup = { + code: 33, + shift: !1 + }, + r.pagedown = { + code: 34, + shift: !1 + }, + r["="] = { + code: 187, + shift: !1 + }, + r["-"] = { + code: 189, + shift: !1 + }, + r["]"] = { + code: 221, + shift: !1 + }, + r["["] = { + code: 219, + shift: !1 + }; + var a = function(e) { + d(e, "keydown") + } + , h = function(e) { + d(e, "keyup") + } + , d = function(e, t) { + if (void 0 !== s[t][e.keyCode]) { + for (var o = s[t][e.keyCode], n = 0; n < o.length; n++) + void 0 === o[n].shift ? o[n].fn(e) : 1 == o[n].shift && 1 == e.shiftKey ? o[n].fn(e) : 0 == o[n].shift && 0 == e.shiftKey && o[n].fn(e); + 1 == i && e.preventDefault() + } + }; + return n.bind = function(e, t, i) { + if (void 0 === i && (i = "keydown"), + void 0 === r[e]) + throw new Error("unsupported key: " + e); + void 0 === s[i][r[e].code] && (s[i][r[e].code] = []), + s[i][r[e].code].push({ + fn: t, + shift: r[e].shift + }) + } + , + n.bindAll = function(e, t) { + void 0 === t && (t = "keydown"); + for (var i in r) + r.hasOwnProperty(i) && n.bind(i, e, t) + } + , + n.getKey = function(e) { + for (var t in r) + if (r.hasOwnProperty(t)) { + if (1 == e.shiftKey && 1 == r[t].shift && e.keyCode == r[t].code) + return t; + if (0 == e.shiftKey && 0 == r[t].shift && e.keyCode == r[t].code) + return t; + if (e.keyCode == r[t].code && "shift" == t) + return t + } + return "unknown key, currently not supported" + } + , + n.unbind = function(e, t, i) { + if (void 0 === i && (i = "keydown"), + void 0 === r[e]) + throw new Error("unsupported key: " + e); + if (void 0 !== t) { + var o = [] + , n = s[i][r[e].code]; + if (void 0 !== n) + for (var a = 0; a < n.length; a++) + n[a].fn == t && n[a].shift == r[e].shift || o.push(s[i][r[e].code][a]); + s[i][r[e].code] = o + } else + s[i][r[e].code] = [] + } + , + n.reset = function() { + s = { + keydown: {}, + keyup: {} + } + } + , + n.destroy = function() { + s = { + keydown: {}, + keyup: {} + }, + o.removeEventListener("keydown", a, !0), + o.removeEventListener("keyup", h, !0) + } + , + o.addEventListener("keydown", a, !0), + o.addEventListener("keyup", h, !0), + n + } + return e + }) + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e(t) { + i(this, e), + this.container = t, + this.x = 0, + this.y = 0, + this.padding = 5, + this.hidden = !1, + this.frame = document.createElement("div"), + this.frame.className = "vis-network-tooltip", + this.container.appendChild(this.frame) + } + return o(e, [{ + key: "setPosition", + value: function(e, t) { + this.x = parseInt(e), + this.y = parseInt(t) + } + }, { + key: "setText", + value: function(e) { + e instanceof Element ? (this.frame.innerHTML = "", + this.frame.appendChild(e)) : this.frame.innerHTML = e + } + }, { + key: "show", + value: function(e) { + if (void 0 === e && (e = !0), + e === !0) { + var t = this.frame.clientHeight + , i = this.frame.clientWidth + , o = this.frame.parentNode.clientHeight + , n = this.frame.parentNode.clientWidth + , s = this.y - t; + s + t + this.padding > o && (s = o - t - this.padding), + s < this.padding && (s = this.padding); + var r = this.x; + r + i + this.padding > n && (r = n - i - this.padding), + r < this.padding && (r = this.padding), + this.frame.style.left = r + "px", + this.frame.style.top = s + "px", + this.frame.style.visibility = "visible", + this.hidden = !1 + } else + this.hide() + } + }, { + key: "hide", + value: function() { + this.hidden = !0, + this.frame.style.visibility = "hidden" + } + }]), + e + }(); + t["default"] = n + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , r = i(15) + , a = o(r) + , h = i(36) + , d = o(h) + , l = i(1) + , c = function() { + function e(t, i) { + var o = this; + n(this, e), + this.body = t, + this.canvas = i, + this.selectionObj = { + nodes: [], + edges: [] + }, + this.hoverObj = { + nodes: {}, + edges: {} + }, + this.options = {}, + this.defaultOptions = { + multiselect: !1, + selectable: !0, + selectConnectedEdges: !0, + hoverConnectedEdges: !0 + }, + l.extend(this.options, this.defaultOptions), + this.body.emitter.on("_dataChanged", function() { + o.updateSelection() + }) + } + return s(e, [{ + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + var t = ["multiselect", "hoverConnectedEdges", "selectable", "selectConnectedEdges"]; + l.selectiveDeepExtend(t, this.options, e) + } + } + }, { + key: "selectOnPoint", + value: function(e) { + var t = !1; + if (this.options.selectable === !0) { + var i = this.getNodeAt(e) || this.getEdgeAt(e); + this.unselectAll(), + void 0 !== i && (t = this.selectObject(i)), + this.body.emitter.emit("_requestRedraw") + } + return t + } + }, { + key: "selectAdditionalOnPoint", + value: function(e) { + var t = !1; + if (this.options.selectable === !0) { + var i = this.getNodeAt(e) || this.getEdgeAt(e); + void 0 !== i && (t = !0, + i.isSelected() === !0 ? this.deselectObject(i) : this.selectObject(i), + this.body.emitter.emit("_requestRedraw")) + } + return t + } + }, { + key: "_generateClickEvent", + value: function(e, t, i, o) { + var n = arguments.length <= 4 || void 0 === arguments[4] ? !1 : arguments[4] + , s = void 0; + s = n === !0 ? { + nodes: [], + edges: [] + } : this.getSelection(), + s.pointer = { + DOM: { + x: i.x, + y: i.y + }, + canvas: this.canvas.DOMtoCanvas(i) + }, + s.event = t, + void 0 !== o && (s.previousSelection = o), + this.body.emitter.emit(e, s) + } + }, { + key: "selectObject", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? this.options.selectConnectedEdges : arguments[1]; + return void 0 !== e ? (e instanceof a["default"] && t === !0 && this._selectConnectedEdges(e), + e.select(), + this._addToSelection(e), + !0) : !1 + } + }, { + key: "deselectObject", + value: function(e) { + e.isSelected() === !0 && (e.selected = !1, + this._removeFromSelection(e)) + } + }, { + key: "_getAllNodesOverlappingWith", + value: function(e) { + for (var t = [], i = this.body.nodes, o = 0; o < this.body.nodeIndices.length; o++) { + var n = this.body.nodeIndices[o]; + i[n].isOverlappingWith(e) && t.push(n) + } + return t + } + }, { + key: "_pointerToPositionObject", + value: function(e) { + var t = this.canvas.DOMtoCanvas(e); + return { + left: t.x - 1, + top: t.y + 1, + right: t.x + 1, + bottom: t.y - 1 + } + } + }, { + key: "getNodeAt", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1] + , i = this._pointerToPositionObject(e) + , o = this._getAllNodesOverlappingWith(i); + return o.length > 0 ? t === !0 ? this.body.nodes[o[o.length - 1]] : o[o.length - 1] : void 0 + } + }, { + key: "_getEdgesOverlappingWith", + value: function(e, t) { + for (var i = this.body.edges, o = 0; o < this.body.edgeIndices.length; o++) { + var n = this.body.edgeIndices[o]; + i[n].isOverlappingWith(e) && t.push(n) + } + } + }, { + key: "_getAllEdgesOverlappingWith", + value: function(e) { + var t = []; + return this._getEdgesOverlappingWith(e, t), + t + } + }, { + key: "getEdgeAt", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1] + , i = this._pointerToPositionObject(e) + , o = this._getAllEdgesOverlappingWith(i); + return o.length > 0 ? t === !0 ? this.body.edges[o[o.length - 1]] : o[o.length - 1] : void 0 + } + }, { + key: "_addToSelection", + value: function(e) { + e instanceof a["default"] ? this.selectionObj.nodes[e.id] = e : this.selectionObj.edges[e.id] = e + } + }, { + key: "_addToHover", + value: function(e) { + e instanceof a["default"] ? this.hoverObj.nodes[e.id] = e : this.hoverObj.edges[e.id] = e + } + }, { + key: "_removeFromSelection", + value: function(e) { + e instanceof a["default"] ? (delete this.selectionObj.nodes[e.id], + this._unselectConnectedEdges(e)) : delete this.selectionObj.edges[e.id] + } + }, { + key: "unselectAll", + value: function() { + for (var e in this.selectionObj.nodes) + this.selectionObj.nodes.hasOwnProperty(e) && this.selectionObj.nodes[e].unselect(); + for (var t in this.selectionObj.edges) + this.selectionObj.edges.hasOwnProperty(t) && this.selectionObj.edges[t].unselect(); + this.selectionObj = { + nodes: {}, + edges: {} + } + } + }, { + key: "_getSelectedNodeCount", + value: function() { + var e = 0; + for (var t in this.selectionObj.nodes) + this.selectionObj.nodes.hasOwnProperty(t) && (e += 1); + return e + } + }, { + key: "_getSelectedNode", + value: function() { + for (var e in this.selectionObj.nodes) + if (this.selectionObj.nodes.hasOwnProperty(e)) + return this.selectionObj.nodes[e] + } + }, { + key: "_getSelectedEdge", + value: function() { + for (var e in this.selectionObj.edges) + if (this.selectionObj.edges.hasOwnProperty(e)) + return this.selectionObj.edges[e] + } + }, { + key: "_getSelectedEdgeCount", + value: function() { + var e = 0; + for (var t in this.selectionObj.edges) + this.selectionObj.edges.hasOwnProperty(t) && (e += 1); + return e + } + }, { + key: "_getSelectedObjectCount", + value: function() { + var e = 0; + for (var t in this.selectionObj.nodes) + this.selectionObj.nodes.hasOwnProperty(t) && (e += 1); + for (var i in this.selectionObj.edges) + this.selectionObj.edges.hasOwnProperty(i) && (e += 1); + return e + } + }, { + key: "_selectionIsEmpty", + value: function() { + for (var e in this.selectionObj.nodes) + if (this.selectionObj.nodes.hasOwnProperty(e)) + return !1; + for (var t in this.selectionObj.edges) + if (this.selectionObj.edges.hasOwnProperty(t)) + return !1; + return !0 + } + }, { + key: "_clusterInSelection", + value: function() { + for (var e in this.selectionObj.nodes) + if (this.selectionObj.nodes.hasOwnProperty(e) && this.selectionObj.nodes[e].clusterSize > 1) + return !0; + return !1 + } + }, { + key: "_selectConnectedEdges", + value: function(e) { + for (var t = 0; t < e.edges.length; t++) { + var i = e.edges[t]; + i.select(), + this._addToSelection(i) + } + } + }, { + key: "_hoverConnectedEdges", + value: function(e) { + for (var t = 0; t < e.edges.length; t++) { + var i = e.edges[t]; + i.hover = !0, + this._addToHover(i) + } + } + }, { + key: "_unselectConnectedEdges", + value: function(e) { + for (var t = 0; t < e.edges.length; t++) { + var i = e.edges[t]; + i.unselect(), + this._removeFromSelection(i) + } + } + }, { + key: "blurObject", + value: function(e) { + e.hover === !0 && (e.hover = !1, + e instanceof a["default"] ? this.body.emitter.emit("blurNode", { + node: e.id + }) : this.body.emitter.emit("blurEdge", { + edge: e.id + })) + } + }, { + key: "hoverObject", + value: function(e) { + var t = !1; + for (var i in this.hoverObj.nodes) + this.hoverObj.nodes.hasOwnProperty(i) && (void 0 === e || e instanceof a["default"] && e.id != i || e instanceof d["default"]) && (this.blurObject(this.hoverObj.nodes[i]), + delete this.hoverObj.nodes[i], + t = !0); + for (var o in this.hoverObj.edges) + this.hoverObj.edges.hasOwnProperty(o) && (t === !0 ? (this.hoverObj.edges[o].hover = !1, + delete this.hoverObj.edges[o]) : void 0 === e && (this.blurObject(this.hoverObj.edges[o]), + delete this.hoverObj.edges[o], + t = !0)); + void 0 !== e && (e.hover === !1 && (e.hover = !0, + this._addToHover(e), + t = !0, + e instanceof a["default"] ? this.body.emitter.emit("hoverNode", { + node: e.id + }) : this.body.emitter.emit("hoverEdge", { + edge: e.id + })), + e instanceof a["default"] && this.options.hoverConnectedEdges === !0 && this._hoverConnectedEdges(e)), + t === !0 && this.body.emitter.emit("_requestRedraw") + } + }, { + key: "getSelection", + value: function() { + var e = this.getSelectedNodes() + , t = this.getSelectedEdges(); + return { + nodes: e, + edges: t + } + } + }, { + key: "getSelectedNodes", + value: function() { + var e = []; + if (this.options.selectable === !0) + for (var t in this.selectionObj.nodes) + this.selectionObj.nodes.hasOwnProperty(t) && e.push(this.selectionObj.nodes[t].id); + return e + } + }, { + key: "getSelectedEdges", + value: function() { + var e = []; + if (this.options.selectable === !0) + for (var t in this.selectionObj.edges) + this.selectionObj.edges.hasOwnProperty(t) && e.push(this.selectionObj.edges[t].id); + return e + } + }, { + key: "setSelection", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1] + , i = void 0 + , o = void 0; + if (!e || !e.nodes && !e.edges) + throw "Selection must be an object with nodes and/or edges properties"; + if ((t.unselectAll || void 0 === t.unselectAll) && this.unselectAll(), + e.nodes) + for (i = 0; i < e.nodes.length; i++) { + o = e.nodes[i]; + var n = this.body.nodes[o]; + if (!n) + throw new RangeError('Node with id "' + o + '" not found'); + this.selectObject(n, t.highlightEdges) + } + if (e.edges) + for (i = 0; i < e.edges.length; i++) { + o = e.edges[i]; + var s = this.body.edges[o]; + if (!s) + throw new RangeError('Edge with id "' + o + '" not found'); + this.selectObject(s) + } + this.body.emitter.emit("_requestRedraw") + } + }, { + key: "selectNodes", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + if (!e || void 0 === e.length) + throw "Selection must be an array with ids"; + this.setSelection({ + nodes: e + }, { + highlightEdges: t + }) + } + }, { + key: "selectEdges", + value: function(e) { + if (!e || void 0 === e.length) + throw "Selection must be an array with ids"; + this.setSelection({ + edges: e + }) + } + }, { + key: "updateSelection", + value: function() { + for (var e in this.selectionObj.nodes) + this.selectionObj.nodes.hasOwnProperty(e) && (this.body.nodes.hasOwnProperty(e) || delete this.selectionObj.nodes[e]); + for (var t in this.selectionObj.edges) + this.selectionObj.edges.hasOwnProperty(t) && (this.body.edges.hasOwnProperty(t) || delete this.selectionObj.edges[t]) + } + }]), + e + }(); + t["default"] = c + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + var i = [] + , o = !0 + , n = !1 + , s = void 0; + try { + for (var r, a = e[Symbol.iterator](); !(o = (r = a.next()).done) && (i.push(r.value), + !t || i.length !== t); o = !0) + ; + } catch (h) { + n = !0, + s = h + } finally { + try { + !o && a["return"] && a["return"]() + } finally { + if (n) + throw s + } + } + return i + } + return function(t, i) { + if (Array.isArray(t)) + return t; + if (Symbol.iterator in Object(t)) + return e(t, i); + throw new TypeError("Invalid attempt to destructure non-iterable instance") + } + }() + , r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , a = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , h = i(54) + , d = o(h) + , l = i(1) + , c = function() { + function e(t) { + n(this, e), + this.body = t, + this.initialRandomSeed = Math.round(1e6 * Math.random()), + this.randomSeed = this.initialRandomSeed, + this.setPhysics = !1, + this.options = {}, + this.optionsBackup = { + physics: {} + }, + this.defaultOptions = { + randomSeed: void 0, + improvedLayout: !0, + hierarchical: { + enabled: !1, + levelSeparation: 150, + nodeSpacing: 100, + treeSpacing: 200, + blockShifting: !0, + edgeMinimization: !0, + parentCentralization: !0, + direction: "UD", + sortMethod: "hubsize" + } + }, + l.extend(this.options, this.defaultOptions), + this.bindEventListeners() + } + return a(e, [{ + key: "bindEventListeners", + value: function() { + var e = this; + this.body.emitter.on("_dataChanged", function() { + e.setupHierarchicalLayout() + }), + this.body.emitter.on("_dataLoaded", function() { + e.layoutNetwork() + }), + this.body.emitter.on("_resetHierarchicalLayout", function() { + e.setupHierarchicalLayout() + }) + } + }, { + key: "setOptions", + value: function(e, t) { + if (void 0 !== e) { + var i = this.options.hierarchical.enabled; + if (l.selectiveDeepExtend(["randomSeed", "improvedLayout"], this.options, e), + l.mergeOptions(this.options, e, "hierarchical"), + void 0 !== e.randomSeed && (this.initialRandomSeed = e.randomSeed), + this.options.hierarchical.enabled === !0) + return i === !0 && this.body.emitter.emit("refresh", !0), + "RL" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? this.options.hierarchical.levelSeparation > 0 && (this.options.hierarchical.levelSeparation *= -1) : this.options.hierarchical.levelSeparation < 0 && (this.options.hierarchical.levelSeparation *= -1), + this.body.emitter.emit("_resetHierarchicalLayout"), + this.adaptAllOptionsForHierarchicalLayout(t); + if (i === !0) + return this.body.emitter.emit("refresh"), + l.deepExtend(t, this.optionsBackup) + } + return t + } + }, { + key: "adaptAllOptionsForHierarchicalLayout", + value: function(e) { + if (this.options.hierarchical.enabled === !0) { + void 0 === e.physics || e.physics === !0 ? (e.physics = { + enabled: void 0 === this.optionsBackup.physics.enabled ? !0 : this.optionsBackup.physics.enabled, + solver: "hierarchicalRepulsion" + }, + this.optionsBackup.physics.enabled = void 0 === this.optionsBackup.physics.enabled ? !0 : this.optionsBackup.physics.enabled, + this.optionsBackup.physics.solver = this.optionsBackup.physics.solver || "barnesHut") : "object" === r(e.physics) ? (this.optionsBackup.physics.enabled = void 0 === e.physics.enabled ? !0 : e.physics.enabled, + this.optionsBackup.physics.solver = e.physics.solver || "barnesHut", + e.physics.solver = "hierarchicalRepulsion") : e.physics !== !1 && (this.optionsBackup.physics.solver = "barnesHut", + e.physics = { + solver: "hierarchicalRepulsion" + }); + var t = "horizontal"; + "RL" !== this.options.hierarchical.direction && "LR" !== this.options.hierarchical.direction || (t = "vertical"), + void 0 === e.edges ? (this.optionsBackup.edges = { + smooth: { + enabled: !0, + type: "dynamic" + } + }, + e.edges = { + smooth: !1 + }) : void 0 === e.edges.smooth ? (this.optionsBackup.edges = { + smooth: { + enabled: !0, + type: "dynamic" + } + }, + e.edges.smooth = !1) : "boolean" == typeof e.edges.smooth ? (this.optionsBackup.edges = { + smooth: e.edges.smooth + }, + e.edges.smooth = { + enabled: e.edges.smooth, + type: t + }) : (void 0 !== e.edges.smooth.type && "dynamic" !== e.edges.smooth.type && (t = e.edges.smooth.type), + this.optionsBackup.edges = { + smooth: void 0 === e.edges.smooth.enabled ? !0 : e.edges.smooth.enabled, + type: void 0 === e.edges.smooth.type ? "dynamic" : e.edges.smooth.type, + roundness: void 0 === e.edges.smooth.roundness ? .5 : e.edges.smooth.roundness, + forceDirection: void 0 === e.edges.smooth.forceDirection ? !1 : e.edges.smooth.forceDirection + }, + e.edges.smooth = { + enabled: void 0 === e.edges.smooth.enabled ? !0 : e.edges.smooth.enabled, + type: t, + roundness: void 0 === e.edges.smooth.roundness ? .5 : e.edges.smooth.roundness, + forceDirection: void 0 === e.edges.smooth.forceDirection ? !1 : e.edges.smooth.forceDirection + }), + this.body.emitter.emit("_forceDisableDynamicCurves", t) + } + return e + } + }, { + key: "seededRandom", + value: function() { + var e = 1e4 * Math.sin(this.randomSeed++); + return e - Math.floor(e) + } + }, { + key: "positionInitially", + value: function(e) { + if (this.options.hierarchical.enabled !== !0) { + this.randomSeed = this.initialRandomSeed; + for (var t = 0; t < e.length; t++) { + var i = e[t] + , o = 1 * e.length + 10 + , n = 2 * Math.PI * this.seededRandom(); + void 0 === i.x && (i.x = o * Math.cos(n)), + void 0 === i.y && (i.y = o * Math.sin(n)) + } + } + } + }, { + key: "layoutNetwork", + value: function() { + if (this.options.hierarchical.enabled !== !0 && this.options.improvedLayout === !0) { + for (var e = 0, t = 0; t < this.body.nodeIndices.length; t++) { + var i = this.body.nodes[this.body.nodeIndices[t]]; + i.predefinedPosition === !0 && (e += 1) + } + if (e < .5 * this.body.nodeIndices.length) { + var o = 10 + , n = 0 + , s = 100; + if (this.body.nodeIndices.length > s) { + for (var r = this.body.nodeIndices.length; this.body.nodeIndices.length > s; ) { + n += 1; + var a = this.body.nodeIndices.length; + n % 3 === 0 ? this.body.modules.clustering.clusterBridges() : this.body.modules.clustering.clusterOutliers(); + var h = this.body.nodeIndices.length; + if (a == h && n % 3 !== 0 || n > o) + return this._declusterAll(), + this.body.emitter.emit("_layoutFailed"), + void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.") + } + this.body.modules.kamadaKawai.setOptions({ + springLength: Math.max(150, 2 * r) + }) + } + this.body.modules.kamadaKawai.solve(this.body.nodeIndices, this.body.edgeIndices, !0), + this._shiftToCenter(); + for (var d = 70, l = 0; l < this.body.nodeIndices.length; l++) + this.body.nodes[this.body.nodeIndices[l]].x += (.5 - this.seededRandom()) * d, + this.body.nodes[this.body.nodeIndices[l]].y += (.5 - this.seededRandom()) * d; + this._declusterAll(), + this.body.emitter.emit("_repositionBezierNodes") + } + } + } + }, { + key: "_shiftToCenter", + value: function() { + for (var e = d["default"].getRangeCore(this.body.nodes, this.body.nodeIndices), t = d["default"].findCenter(e), i = 0; i < this.body.nodeIndices.length; i++) + this.body.nodes[this.body.nodeIndices[i]].x -= t.x, + this.body.nodes[this.body.nodeIndices[i]].y -= t.y + } + }, { + key: "_declusterAll", + value: function() { + for (var e = !0; e === !0; ) { + e = !1; + for (var t = 0; t < this.body.nodeIndices.length; t++) + this.body.nodes[this.body.nodeIndices[t]].isCluster === !0 && (e = !0, + this.body.modules.clustering.openCluster(this.body.nodeIndices[t], {}, !1)); + e === !0 && this.body.emitter.emit("_dataChanged") + } + } + }, { + key: "getSeed", + value: function() { + return this.initialRandomSeed + } + }, { + key: "setupHierarchicalLayout", + value: function() { + if (this.options.hierarchical.enabled === !0 && this.body.nodeIndices.length > 0) { + var e = void 0 + , t = void 0 + , i = !1 + , o = !0 + , n = !1; + this.hierarchicalLevels = {}, + this.lastNodeOnLevel = {}, + this.hierarchicalChildrenReference = {}, + this.hierarchicalParentReference = {}, + this.hierarchicalTrees = {}, + this.treeIndex = -1, + this.distributionOrdering = {}, + this.distributionIndex = {}, + this.distributionOrderingPresence = {}; + for (t in this.body.nodes) + this.body.nodes.hasOwnProperty(t) && (e = this.body.nodes[t], + void 0 === e.options.x && void 0 === e.options.y && (o = !1), + void 0 !== e.options.level ? (i = !0, + this.hierarchicalLevels[t] = e.options.level) : n = !0); + if (n === !0 && i === !0) + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + n === !0 && ("hubsize" === this.options.hierarchical.sortMethod ? this._determineLevelsByHubsize() : "directed" === this.options.hierarchical.sortMethod ? this._determineLevelsDirected() : "custom" === this.options.hierarchical.sortMethod && this._determineLevelsCustomCallback()); + for (var s in this.body.nodes) + this.body.nodes.hasOwnProperty(s) && void 0 === this.hierarchicalLevels[s] && (this.hierarchicalLevels[s] = 0); + var r = this._getDistribution(); + this._generateMap(), + this._placeNodesByHierarchy(r), + this._condenseHierarchy(), + this._shiftToCenter() + } + } + }, { + key: "_condenseHierarchy", + value: function() { + var e = this + , t = !1 + , i = {} + , o = function() { + for (var t = a(), i = 0; i < t.length - 1; i++) { + var o = t[i].max - t[i + 1].min; + n(i + 1, o + e.options.hierarchical.treeSpacing) + } + } + , n = function(t, i) { + for (var o in e.hierarchicalTrees) + if (e.hierarchicalTrees.hasOwnProperty(o) && e.hierarchicalTrees[o] === t) { + var n = e.body.nodes[o] + , s = e._getPositionForHierarchy(n); + e._setPositionForHierarchy(n, s + i, void 0, !0) + } + } + , r = function(t) { + var i = 1e9 + , o = -1e9; + for (var n in e.hierarchicalTrees) + if (e.hierarchicalTrees.hasOwnProperty(n) && e.hierarchicalTrees[n] === t) { + var s = e._getPositionForHierarchy(e.body.nodes[n]); + i = Math.min(s, i), + o = Math.max(s, o) + } + return { + min: i, + max: o + } + } + , a = function() { + for (var t = [], i = 0; i <= e.treeIndex; i++) + t.push(r(i)); + return t + } + , h = function _(t, i) { + if (i[t.id] = !0, + e.hierarchicalChildrenReference[t.id]) { + var o = e.hierarchicalChildrenReference[t.id]; + if (o.length > 0) + for (var n = 0; n < o.length; n++) + _(e.body.nodes[o[n]], i) + } + } + , d = function(t) { + var i = arguments.length <= 1 || void 0 === arguments[1] ? 1e9 : arguments[1] + , o = 1e9 + , n = 1e9 + , r = 1e9 + , a = -1e9; + for (var h in t) + if (t.hasOwnProperty(h)) { + var d = e.body.nodes[h] + , l = e.hierarchicalLevels[d.id] + , c = e._getPositionForHierarchy(d) + , u = e._getSpaceAroundNode(d, t) + , f = s(u, 2) + , p = f[0] + , v = f[1]; + o = Math.min(p, o), + n = Math.min(v, n), + i >= l && (r = Math.min(c, r), + a = Math.max(c, a)) + } + return [r, a, o, n] + } + , l = function w(t) { + var i = e.hierarchicalLevels[t]; + if (e.hierarchicalChildrenReference[t]) { + var o = e.hierarchicalChildrenReference[t]; + if (o.length > 0) + for (var n = 0; n < o.length; n++) + i = Math.max(i, w(o[n])) + } + return i + } + , c = function(e, t) { + var i = l(e.id) + , o = l(t.id); + return Math.min(i, o) + } + , u = function(t, i) { + var o = e.hierarchicalParentReference[t.id] + , n = e.hierarchicalParentReference[i.id]; + if (void 0 === o || void 0 === n) + return !1; + for (var s = 0; s < o.length; s++) + for (var r = 0; r < n.length; r++) + if (o[s] == n[r]) + return !0; + return !1 + } + , f = function(t, i, o) { + for (var n = 0; n < i.length; n++) { + var s = i[n] + , r = e.distributionOrdering[s]; + if (r.length > 1) + for (var a = 0; a < r.length - 1; a++) + u(r[a], r[a + 1]) === !0 && e.hierarchicalTrees[r[a].id] === e.hierarchicalTrees[r[a + 1].id] && t(r[a], r[a + 1], o) + } + } + , p = function(i, o) { + var n = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , r = e._getPositionForHierarchy(i) + , a = e._getPositionForHierarchy(o) + , l = Math.abs(a - r); + if (l > e.options.hierarchical.nodeSpacing) { + var u = {}; + u[i.id] = !0; + var f = {}; + f[o.id] = !0, + h(i, u), + h(o, f); + var p = c(i, o) + , v = d(u, p) + , y = s(v, 4) + , g = (y[0], + y[1]) + , b = (y[2], + y[3], + d(f, p)) + , m = s(b, 4) + , _ = m[0] + , w = (m[1], + m[2]) + , k = (m[3], + Math.abs(g - _)); + if (k > e.options.hierarchical.nodeSpacing) { + var x = g - _ + e.options.hierarchical.nodeSpacing; + x < -w + e.options.hierarchical.nodeSpacing && (x = -w + e.options.hierarchical.nodeSpacing), + 0 > x && (e._shiftBlock(o.id, x), + t = !0, + n === !0 && e._centerParent(o)) + } + } + } + , v = function(o, n) { + for (var r = n.id, a = n.edges, l = e.hierarchicalLevels[n.id], c = e.options.hierarchical.levelSeparation * e.options.hierarchical.levelSeparation, u = {}, f = [], p = 0; p < a.length; p++) { + var v = a[p]; + if (v.toId != v.fromId) { + var y = v.toId == r ? v.from : v.to; + u[a[p].id] = y, + e.hierarchicalLevels[y.id] < l && f.push(v) + } + } + var g = function(t, i) { + for (var o = 0, n = 0; n < i.length; n++) + if (void 0 !== u[i[n].id]) { + var s = e._getPositionForHierarchy(u[i[n].id]) - t; + o += s / Math.sqrt(s * s + c) + } + return o + } + , b = function(t, i) { + for (var o = 0, n = 0; n < i.length; n++) + if (void 0 !== u[i[n].id]) { + var s = e._getPositionForHierarchy(u[i[n].id]) - t; + o -= c * Math.pow(s * s + c, -1.5) + } + return o + } + , m = function(t, i) { + for (var o = e._getPositionForHierarchy(n), s = {}, r = 0; t > r; r++) { + var a = g(o, i) + , h = b(o, i) + , d = 40 + , l = Math.max(-d, Math.min(d, Math.round(a / h))); + if (o -= l, + void 0 !== s[o]) + break; + s[o] = r + } + return o + } + , _ = function(o) { + var r = e._getPositionForHierarchy(n); + if (void 0 === i[n.id]) { + var a = {}; + a[n.id] = !0, + h(n, a), + i[n.id] = a + } + var l = d(i[n.id]) + , c = s(l, 4) + , u = (c[0], + c[1], + c[2]) + , f = c[3] + , p = o - r + , v = 0; + p > 0 ? v = Math.min(p, f - e.options.hierarchical.nodeSpacing) : 0 > p && (v = -Math.min(-p, u - e.options.hierarchical.nodeSpacing)), + 0 != v && (e._shiftBlock(n.id, v), + t = !0) + } + , w = function(i) { + var o = e._getPositionForHierarchy(n) + , r = e._getSpaceAroundNode(n) + , a = s(r, 2) + , h = a[0] + , d = a[1] + , l = i - o + , c = o; + l > 0 ? c = Math.min(o + (d - e.options.hierarchical.nodeSpacing), i) : 0 > l && (c = Math.max(o - (h - e.options.hierarchical.nodeSpacing), i)), + c !== o && (e._setPositionForHierarchy(n, c, void 0, !0), + t = !0) + } + , k = m(o, f); + _(k), + k = m(o, a), + w(k) + } + , y = function(i) { + var o = Object.keys(e.distributionOrdering); + o = o.reverse(); + for (var n = 0; i > n; n++) { + t = !1; + for (var s = 0; s < o.length; s++) + for (var r = o[s], a = e.distributionOrdering[r], h = 0; h < a.length; h++) + v(1e3, a[h]); + if (t !== !0) + break + } + } + , g = function(i) { + var o = Object.keys(e.distributionOrdering); + o = o.reverse(); + for (var n = 0; i > n && (t = !1, + f(p, o, !0), + t === !0); n++) + ; + } + , b = function() { + for (var t in e.body.nodes) + e.body.nodes.hasOwnProperty(t) && e._centerParent(e.body.nodes[t]) + } + , m = function() { + var t = Object.keys(e.distributionOrdering); + t = t.reverse(); + for (var i = 0; i < t.length; i++) + for (var o = t[i], n = e.distributionOrdering[o], s = 0; s < n.length; s++) + e._centerParent(n[s]) + }; + this.options.hierarchical.blockShifting === !0 && (g(5), + b()), + this.options.hierarchical.edgeMinimization === !0 && y(20), + this.options.hierarchical.parentCentralization === !0 && m(), + o() + } + }, { + key: "_getSpaceAroundNode", + value: function(e, t) { + var i = !0; + void 0 === t && (i = !1); + var o = this.hierarchicalLevels[e.id]; + if (void 0 !== o) { + var n = this.distributionIndex[e.id] + , s = this._getPositionForHierarchy(e) + , r = 1e9 + , a = 1e9; + if (0 !== n) { + var h = this.distributionOrdering[o][n - 1]; + if (i === !0 && void 0 === t[h.id] || i === !1) { + var d = this._getPositionForHierarchy(h); + r = s - d + } + } + if (n != this.distributionOrdering[o].length - 1) { + var l = this.distributionOrdering[o][n + 1]; + if (i === !0 && void 0 === t[l.id] || i === !1) { + var c = this._getPositionForHierarchy(l); + a = Math.min(a, c - s) + } + } + return [r, a] + } + return [0, 0] + } + }, { + key: "_centerParent", + value: function(e) { + if (this.hierarchicalParentReference[e.id]) + for (var t = this.hierarchicalParentReference[e.id], i = 0; i < t.length; i++) { + var o = t[i] + , n = this.body.nodes[o]; + if (this.hierarchicalChildrenReference[o]) { + var r = 1e9 + , a = -1e9 + , h = this.hierarchicalChildrenReference[o]; + if (h.length > 0) + for (var d = 0; d < h.length; d++) { + var l = this.body.nodes[h[d]]; + r = Math.min(r, this._getPositionForHierarchy(l)), + a = Math.max(a, this._getPositionForHierarchy(l)) + } + var c = this._getPositionForHierarchy(n) + , u = this._getSpaceAroundNode(n) + , f = s(u, 2) + , p = f[0] + , v = f[1] + , y = .5 * (r + a) + , g = c - y; + (0 > g && Math.abs(g) < v - this.options.hierarchical.nodeSpacing || g > 0 && Math.abs(g) < p - this.options.hierarchical.nodeSpacing) && this._setPositionForHierarchy(n, y, void 0, !0) + } + } + } + }, { + key: "_placeNodesByHierarchy", + value: function(e) { + this.positionedNodes = {}; + for (var t in e) + if (e.hasOwnProperty(t)) { + var i = Object.keys(e[t]); + i = this._indexArrayToNodes(i), + this._sortNodeArray(i); + for (var o = 0, n = 0; n < i.length; n++) { + var s = i[n]; + if (void 0 === this.positionedNodes[s.id]) { + var r = this.options.hierarchical.nodeSpacing * o; + o > 0 && (r = this._getPositionForHierarchy(i[n - 1]) + this.options.hierarchical.nodeSpacing), + this._setPositionForHierarchy(s, r, t), + this._validataPositionAndContinue(s, t, r), + o++ + } + } + } + } + }, { + key: "_placeBranchNodes", + value: function(e, t) { + if (void 0 !== this.hierarchicalChildrenReference[e]) { + for (var i = [], o = 0; o < this.hierarchicalChildrenReference[e].length; o++) + i.push(this.body.nodes[this.hierarchicalChildrenReference[e][o]]); + this._sortNodeArray(i); + for (var n = 0; n < i.length; n++) { + var s = i[n] + , r = this.hierarchicalLevels[s.id]; + if (!(r > t && void 0 === this.positionedNodes[s.id])) + return; + var a = void 0; + a = 0 === n ? this._getPositionForHierarchy(this.body.nodes[e]) : this._getPositionForHierarchy(i[n - 1]) + this.options.hierarchical.nodeSpacing, + this._setPositionForHierarchy(s, a, r), + this._validataPositionAndContinue(s, r, a) + } + for (var h = 1e9, d = -1e9, l = 0; l < i.length; l++) { + var c = i[l].id; + h = Math.min(h, this._getPositionForHierarchy(this.body.nodes[c])), + d = Math.max(d, this._getPositionForHierarchy(this.body.nodes[c])) + } + this._setPositionForHierarchy(this.body.nodes[e], .5 * (h + d), t) + } + } + }, { + key: "_validataPositionAndContinue", + value: function(e, t, i) { + if (void 0 !== this.lastNodeOnLevel[t]) { + var o = this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[t]]); + if (i - o < this.options.hierarchical.nodeSpacing) { + var n = o + this.options.hierarchical.nodeSpacing - i + , s = this._findCommonParent(this.lastNodeOnLevel[t], e.id); + this._shiftBlock(s.withChild, n) + } + } + this.lastNodeOnLevel[t] = e.id, + this.positionedNodes[e.id] = !0, + this._placeBranchNodes(e.id, t) + } + }, { + key: "_indexArrayToNodes", + value: function(e) { + for (var t = [], i = 0; i < e.length; i++) + t.push(this.body.nodes[e[i]]); + return t + } + }, { + key: "_getDistribution", + value: function() { + var e = {} + , t = void 0 + , i = void 0; + for (t in this.body.nodes) + if (this.body.nodes.hasOwnProperty(t)) { + i = this.body.nodes[t]; + var o = void 0 === this.hierarchicalLevels[t] ? 0 : this.hierarchicalLevels[t]; + "UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? (i.y = this.options.hierarchical.levelSeparation * o, + i.options.fixed.y = !0) : (i.x = this.options.hierarchical.levelSeparation * o, + i.options.fixed.x = !0), + void 0 === e[o] && (e[o] = {}), + e[o][t] = i + } + return e + } + }, { + key: "_getHubSize", + value: function() { + var e = 0; + for (var t in this.body.nodes) + if (this.body.nodes.hasOwnProperty(t)) { + var i = this.body.nodes[t]; + void 0 === this.hierarchicalLevels[t] && (e = i.edges.length < e ? e : i.edges.length) + } + return e + } + }, { + key: "_determineLevelsByHubsize", + value: function() { + for (var e = this, t = 1, i = function(t, i) { + void 0 === e.hierarchicalLevels[i.id] && (void 0 === e.hierarchicalLevels[t.id] && (e.hierarchicalLevels[t.id] = 0), + e.hierarchicalLevels[i.id] = e.hierarchicalLevels[t.id] + 1) + }; t > 0 && (t = this._getHubSize(), + 0 !== t); ) + for (var o in this.body.nodes) + if (this.body.nodes.hasOwnProperty(o)) { + var n = this.body.nodes[o]; + n.edges.length === t && this._crawlNetwork(i, o) + } + } + }, { + key: "_determineLevelsCustomCallback", + value: function() { + var e = this + , t = 1e5 + , i = function(e, t, i) {} + , o = function(o, n, s) { + var r = e.hierarchicalLevels[o.id]; + void 0 === r && (e.hierarchicalLevels[o.id] = t); + var a = i(d["default"].cloneOptions(o, "node"), d["default"].cloneOptions(n, "node"), d["default"].cloneOptions(s, "edge")); + e.hierarchicalLevels[n.id] = e.hierarchicalLevels[o.id] + a + }; + this._crawlNetwork(o), + this._setMinLevelToZero() + } + }, { + key: "_determineLevelsDirected", + value: function() { + var e = this + , t = 1e4 + , i = function(i, o, n) { + var s = e.hierarchicalLevels[i.id]; + void 0 === s && (e.hierarchicalLevels[i.id] = t), + n.toId == o.id ? e.hierarchicalLevels[o.id] = e.hierarchicalLevels[i.id] + 1 : e.hierarchicalLevels[o.id] = e.hierarchicalLevels[i.id] - 1 + }; + this._crawlNetwork(i), + this._setMinLevelToZero() + } + }, { + key: "_setMinLevelToZero", + value: function() { + var e = 1e9; + for (var t in this.body.nodes) + this.body.nodes.hasOwnProperty(t) && void 0 !== this.hierarchicalLevels[t] && (e = Math.min(this.hierarchicalLevels[t], e)); + for (var i in this.body.nodes) + this.body.nodes.hasOwnProperty(i) && void 0 !== this.hierarchicalLevels[i] && (this.hierarchicalLevels[i] -= e) + } + }, { + key: "_generateMap", + value: function() { + var e = this + , t = function(t, i) { + if (e.hierarchicalLevels[i.id] > e.hierarchicalLevels[t.id]) { + var o = t.id + , n = i.id; + void 0 === e.hierarchicalChildrenReference[o] && (e.hierarchicalChildrenReference[o] = []), + e.hierarchicalChildrenReference[o].push(n), + void 0 === e.hierarchicalParentReference[n] && (e.hierarchicalParentReference[n] = []), + e.hierarchicalParentReference[n].push(o) + } + }; + this._crawlNetwork(t) + } + }, { + key: "_crawlNetwork", + value: function() { + var e = this + , t = arguments.length <= 0 || void 0 === arguments[0] ? function() {} + : arguments[0] + , i = arguments[1] + , o = {} + , n = 0 + , s = function d(i, n) { + if (void 0 === o[i.id]) { + void 0 === e.hierarchicalTrees[i.id] && (e.hierarchicalTrees[i.id] = n, + e.treeIndex = Math.max(n, e.treeIndex)), + o[i.id] = !0; + for (var s = void 0, r = 0; r < i.edges.length; r++) + i.edges[r].connected === !0 && (s = i.edges[r].toId === i.id ? i.edges[r].from : i.edges[r].to, + i.id !== s.id && (t(i, s, i.edges[r]), + d(s, n))) + } + }; + if (void 0 === i) + for (var r = 0; r < this.body.nodeIndices.length; r++) { + var a = this.body.nodes[this.body.nodeIndices[r]]; + void 0 === o[a.id] && (s(a, n), + n += 1) + } + else { + var h = this.body.nodes[i]; + if (void 0 === h) + return void console.error("Node not found:", i); + s(h) + } + } + }, { + key: "_shiftBlock", + value: function(e, t) { + if ("UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? this.body.nodes[e].x += t : this.body.nodes[e].y += t, + void 0 !== this.hierarchicalChildrenReference[e]) + for (var i = 0; i < this.hierarchicalChildrenReference[e].length; i++) + this._shiftBlock(this.hierarchicalChildrenReference[e][i], t) + } + }, { + key: "_findCommonParent", + value: function(e, t) { + var i = this + , o = {} + , n = function r(e, t) { + if (void 0 !== i.hierarchicalParentReference[t]) + for (var o = 0; o < i.hierarchicalParentReference[t].length; o++) { + var n = i.hierarchicalParentReference[t][o]; + e[n] = !0, + r(e, n) + } + } + , s = function a(e, t) { + if (void 0 !== i.hierarchicalParentReference[t]) + for (var o = 0; o < i.hierarchicalParentReference[t].length; o++) { + var n = i.hierarchicalParentReference[t][o]; + if (void 0 !== e[n]) + return { + foundParent: n, + withChild: t + }; + var s = a(e, n); + if (null !== s.foundParent) + return s + } + return { + foundParent: null, + withChild: t + } + }; + return n(o, e), + s(o, t) + } + }, { + key: "_setPositionForHierarchy", + value: function(e, t, i) { + var o = arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3]; + o !== !0 && (void 0 === this.distributionOrdering[i] && (this.distributionOrdering[i] = [], + this.distributionOrderingPresence[i] = {}), + void 0 === this.distributionOrderingPresence[i][e.id] && (this.distributionOrdering[i].push(e), + this.distributionIndex[e.id] = this.distributionOrdering[i].length - 1), + this.distributionOrderingPresence[i][e.id] = !0), + "UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? e.x = t : e.y = t + } + }, { + key: "_getPositionForHierarchy", + value: function(e) { + return "UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? e.x : e.y + } + }, { + key: "_sortNodeArray", + value: function(e) { + e.length > 1 && ("UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction ? e.sort(function(e, t) { + return e.x - t.x + }) : e.sort(function(e, t) { + return e.y - t.y + })) + } + }]), + e + }(); + t["default"] = c + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = i(1) + , r = i(58) + , a = i(61) + , h = function() { + function e(t, i, n) { + var r = this; + o(this, e), + this.body = t, + this.canvas = i, + this.selectionHandler = n, + this.editMode = !1, + this.manipulationDiv = void 0, + this.editModeDiv = void 0, + this.closeDiv = void 0, + this.manipulationHammers = [], + this.temporaryUIFunctions = {}, + this.temporaryEventFunctions = [], + this.touchTime = 0, + this.temporaryIds = { + nodes: [], + edges: [] + }, + this.guiEnabled = !1, + this.inMode = !1, + this.selectedControlNode = void 0, + this.options = {}, + this.defaultOptions = { + enabled: !1, + initiallyActive: !1, + addNode: !0, + addEdge: !0, + editNode: void 0, + editEdge: !0, + deleteNode: !0, + deleteEdge: !0, + controlNodeStyle: { + shape: "dot", + size: 6, + color: { + background: "#ff0000", + border: "#3c3c3c", + highlight: { + background: "#07f968", + border: "#3c3c3c" + } + }, + borderWidth: 2, + borderWidthSelected: 2 + } + }, + s.extend(this.options, this.defaultOptions), + this.body.emitter.on("destroy", function() { + r._clean() + }), + this.body.emitter.on("_dataChanged", this._restore.bind(this)), + this.body.emitter.on("_resetData", this._restore.bind(this)) + } + return n(e, [{ + key: "_restore", + value: function() { + this.inMode !== !1 && (this.options.initiallyActive === !0 ? this.enableEditMode() : this.disableEditMode()) + } + }, { + key: "setOptions", + value: function(e, t, i) { + void 0 !== t && (void 0 !== t.locale ? this.options.locale = t.locale : this.options.locale = i.locale, + void 0 !== t.locales ? this.options.locales = t.locales : this.options.locales = i.locales), + void 0 !== e && ("boolean" == typeof e ? this.options.enabled = e : (this.options.enabled = !0, + s.deepExtend(this.options, e)), + this.options.initiallyActive === !0 && (this.editMode = !0), + this._setup()) + } + }, { + key: "toggleEditMode", + value: function() { + this.editMode === !0 ? this.disableEditMode() : this.enableEditMode() + } + }, { + key: "enableEditMode", + value: function() { + this.editMode = !0, + this._clean(), + this.guiEnabled === !0 && (this.manipulationDiv.style.display = "block", + this.closeDiv.style.display = "block", + this.editModeDiv.style.display = "none", + this.showManipulatorToolbar()) + } + }, { + key: "disableEditMode", + value: function() { + this.editMode = !1, + this._clean(), + this.guiEnabled === !0 && (this.manipulationDiv.style.display = "none", + this.closeDiv.style.display = "none", + this.editModeDiv.style.display = "block", + this._createEditButton()) + } + }, { + key: "showManipulatorToolbar", + value: function() { + if (this._clean(), + this.manipulationDOM = {}, + this.guiEnabled === !0) { + this.editMode = !0, + this.manipulationDiv.style.display = "block", + this.closeDiv.style.display = "block"; + var e = this.selectionHandler._getSelectedNodeCount() + , t = this.selectionHandler._getSelectedEdgeCount() + , i = e + t + , o = this.options.locales[this.options.locale] + , n = !1; + this.options.addNode !== !1 && (this._createAddNodeButton(o), + n = !0), + this.options.addEdge !== !1 && (n === !0 ? this._createSeperator(1) : n = !0, + this._createAddEdgeButton(o)), + 1 === e && "function" == typeof this.options.editNode ? (n === !0 ? this._createSeperator(2) : n = !0, + this._createEditNodeButton(o)) : 1 === t && 0 === e && this.options.editEdge !== !1 && (n === !0 ? this._createSeperator(3) : n = !0, + this._createEditEdgeButton(o)), + 0 !== i && (e > 0 && this.options.deleteNode !== !1 ? (n === !0 && this._createSeperator(4), + this._createDeleteButton(o)) : 0 === e && this.options.deleteEdge !== !1 && (n === !0 && this._createSeperator(4), + this._createDeleteButton(o))), + this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this)), + this._temporaryBindEvent("select", this.showManipulatorToolbar.bind(this)) + } + this.body.emitter.emit("_redraw") + } + }, { + key: "addNodeMode", + value: function() { + if (this.editMode !== !0 && this.enableEditMode(), + this._clean(), + this.inMode = "addNode", + this.guiEnabled === !0) { + var e = this.options.locales[this.options.locale]; + this.manipulationDOM = {}, + this._createBackButton(e), + this._createSeperator(), + this._createDescription(e.addDescription || this.options.locales.en.addDescription), + this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this)) + } + this._temporaryBindEvent("click", this._performAddNode.bind(this)) + } + }, { + key: "editNode", + value: function() { + var e = this; + this.editMode !== !0 && this.enableEditMode(), + this._clean(); + var t = this.selectionHandler._getSelectedNode(); + if (void 0 !== t) { + if (this.inMode = "editNode", + "function" != typeof this.options.editNode) + throw new Error("No function has been configured to handle the editing of nodes."); + if (t.isCluster !== !0) { + var i = s.deepExtend({}, t.options, !1); + if (i.x = t.x, + i.y = t.y, + 2 !== this.options.editNode.length) + throw new Error("The function for edit does not support two arguments (data, callback)"); + this.options.editNode(i, function(t) { + null !== t && void 0 !== t && "editNode" === e.inMode && e.body.data.nodes.getDataSet().update(t), + e.showManipulatorToolbar() + }) + } else + alert(this.options.locales[this.options.locale].editClusterError || this.options.locales.en.editClusterError) + } else + this.showManipulatorToolbar() + } + }, { + key: "addEdgeMode", + value: function() { + if (this.editMode !== !0 && this.enableEditMode(), + this._clean(), + this.inMode = "addEdge", + this.guiEnabled === !0) { + var e = this.options.locales[this.options.locale]; + this.manipulationDOM = {}, + this._createBackButton(e), + this._createSeperator(), + this._createDescription(e.edgeDescription || this.options.locales.en.edgeDescription), + this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this)) + } + this._temporaryBindUI("onTouch", this._handleConnect.bind(this)), + this._temporaryBindUI("onDragEnd", this._finishConnect.bind(this)), + this._temporaryBindUI("onDrag", this._dragControlNode.bind(this)), + this._temporaryBindUI("onRelease", this._finishConnect.bind(this)), + this._temporaryBindUI("onDragStart", function() {}), + this._temporaryBindUI("onHold", function() {}) + } + }, { + key: "editEdgeMode", + value: function() { + var e = this; + if (this.editMode !== !0 && this.enableEditMode(), + this._clean(), + this.inMode = "editEdge", + this.guiEnabled === !0) { + var t = this.options.locales[this.options.locale]; + this.manipulationDOM = {}, + this._createBackButton(t), + this._createSeperator(), + this._createDescription(t.editEdgeDescription || this.options.locales.en.editEdgeDescription), + this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this)) + } + this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0], + void 0 !== this.edgeBeingEditedId ? !function() { + var t = e.body.edges[e.edgeBeingEditedId] + , i = e._getNewTargetNode(t.from.x, t.from.y) + , o = e._getNewTargetNode(t.to.x, t.to.y); + e.temporaryIds.nodes.push(i.id), + e.temporaryIds.nodes.push(o.id), + e.body.nodes[i.id] = i, + e.body.nodeIndices.push(i.id), + e.body.nodes[o.id] = o, + e.body.nodeIndices.push(o.id), + e._temporaryBindUI("onTouch", e._controlNodeTouch.bind(e)), + e._temporaryBindUI("onTap", function() {}), + e._temporaryBindUI("onHold", function() {}), + e._temporaryBindUI("onDragStart", e._controlNodeDragStart.bind(e)), + e._temporaryBindUI("onDrag", e._controlNodeDrag.bind(e)), + e._temporaryBindUI("onDragEnd", e._controlNodeDragEnd.bind(e)), + e._temporaryBindUI("onMouseMove", function() {}), + e._temporaryBindEvent("beforeDrawing", function(e) { + var n = t.edgeType.findBorderPositions(e); + i.selected === !1 && (i.x = n.from.x, + i.y = n.from.y), + o.selected === !1 && (o.x = n.to.x, + o.y = n.to.y) + }), + e.body.emitter.emit("_redraw") + }() : this.showManipulatorToolbar() + } + }, { + key: "deleteSelected", + value: function() { + var e = this; + this.editMode !== !0 && this.enableEditMode(), + this._clean(), + this.inMode = "delete"; + var t = this.selectionHandler.getSelectedNodes() + , i = this.selectionHandler.getSelectedEdges() + , o = void 0; + if (t.length > 0) { + for (var n = 0; n < t.length; n++) + if (this.body.nodes[t[n]].isCluster === !0) + return void alert(this.options.locales[this.options.locale].deleteClusterError || this.options.locales.en.deleteClusterError); + "function" == typeof this.options.deleteNode && (o = this.options.deleteNode) + } else + i.length > 0 && "function" == typeof this.options.deleteEdge && (o = this.options.deleteEdge); + if ("function" == typeof o) { + var s = { + nodes: t, + edges: i + }; + if (2 !== o.length) + throw new Error("The function for delete does not support two arguments (data, callback)"); + o(s, function(t) { + null !== t && void 0 !== t && "delete" === e.inMode ? (e.body.data.edges.getDataSet().remove(t.edges), + e.body.data.nodes.getDataSet().remove(t.nodes), + e.body.emitter.emit("startSimulation"), + e.showManipulatorToolbar()) : (e.body.emitter.emit("startSimulation"), + e.showManipulatorToolbar()) + }) + } else + this.body.data.edges.getDataSet().remove(i), + this.body.data.nodes.getDataSet().remove(t), + this.body.emitter.emit("startSimulation"), + this.showManipulatorToolbar() + } + }, { + key: "_setup", + value: function() { + this.options.enabled === !0 ? (this.guiEnabled = !0, + this._createWrappers(), + this.editMode === !1 ? this._createEditButton() : this.showManipulatorToolbar()) : (this._removeManipulationDOM(), + this.guiEnabled = !1) + } + }, { + key: "_createWrappers", + value: function() { + void 0 === this.manipulationDiv && (this.manipulationDiv = document.createElement("div"), + this.manipulationDiv.className = "vis-manipulation", + this.editMode === !0 ? this.manipulationDiv.style.display = "block" : this.manipulationDiv.style.display = "none", + this.canvas.frame.appendChild(this.manipulationDiv)), + void 0 === this.editModeDiv && (this.editModeDiv = document.createElement("div"), + this.editModeDiv.className = "vis-edit-mode", + this.editMode === !0 ? this.editModeDiv.style.display = "none" : this.editModeDiv.style.display = "block", + this.canvas.frame.appendChild(this.editModeDiv)), + void 0 === this.closeDiv && (this.closeDiv = document.createElement("div"), + this.closeDiv.className = "vis-close", + this.closeDiv.style.display = this.manipulationDiv.style.display, + this.canvas.frame.appendChild(this.closeDiv)) + } + }, { + key: "_getNewTargetNode", + value: function(e, t) { + var i = s.deepExtend({}, this.options.controlNodeStyle); + i.id = "targetNode" + s.randomUUID(), + i.hidden = !1, + i.physics = !1, + i.x = e, + i.y = t; + var o = this.body.functions.createNode(i); + return o.shape.boundingBox = { + left: e, + right: e, + top: t, + bottom: t + }, + o + } + }, { + key: "_createEditButton", + value: function() { + this._clean(), + this.manipulationDOM = {}, + s.recursiveDOMDelete(this.editModeDiv); + var e = this.options.locales[this.options.locale] + , t = this._createButton("editMode", "vis-button vis-edit vis-edit-mode", e.edit || this.options.locales.en.edit); + this.editModeDiv.appendChild(t), + this._bindHammerToDiv(t, this.toggleEditMode.bind(this)) + } + }, { + key: "_clean", + value: function() { + this.inMode = !1, + this.guiEnabled === !0 && (s.recursiveDOMDelete(this.editModeDiv), + s.recursiveDOMDelete(this.manipulationDiv), + this._cleanManipulatorHammers()), + this._cleanupTemporaryNodesAndEdges(), + this._unbindTemporaryUIs(), + this._unbindTemporaryEvents(), + this.body.emitter.emit("restorePhysics") + } + }, { + key: "_cleanManipulatorHammers", + value: function() { + if (0 != this.manipulationHammers.length) { + for (var e = 0; e < this.manipulationHammers.length; e++) + this.manipulationHammers[e].destroy(); + this.manipulationHammers = [] + } + } + }, { + key: "_removeManipulationDOM", + value: function() { + this._clean(), + s.recursiveDOMDelete(this.manipulationDiv), + s.recursiveDOMDelete(this.editModeDiv), + s.recursiveDOMDelete(this.closeDiv), + this.manipulationDiv && this.canvas.frame.removeChild(this.manipulationDiv), + this.editModeDiv && this.canvas.frame.removeChild(this.editModeDiv), + this.closeDiv && this.canvas.frame.removeChild(this.closeDiv), + this.manipulationDiv = void 0, + this.editModeDiv = void 0, + this.closeDiv = void 0 + } + }, { + key: "_createSeperator", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? 1 : arguments[0]; + this.manipulationDOM["seperatorLineDiv" + e] = document.createElement("div"), + this.manipulationDOM["seperatorLineDiv" + e].className = "vis-separator-line", + this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv" + e]) + } + }, { + key: "_createAddNodeButton", + value: function(e) { + var t = this._createButton("addNode", "vis-button vis-add", e.addNode || this.options.locales.en.addNode); + this.manipulationDiv.appendChild(t), + this._bindHammerToDiv(t, this.addNodeMode.bind(this)) + } + }, { + key: "_createAddEdgeButton", + value: function(e) { + var t = this._createButton("addEdge", "vis-button vis-connect", e.addEdge || this.options.locales.en.addEdge); + this.manipulationDiv.appendChild(t), + this._bindHammerToDiv(t, this.addEdgeMode.bind(this)) + } + }, { + key: "_createEditNodeButton", + value: function(e) { + var t = this._createButton("editNode", "vis-button vis-edit", e.editNode || this.options.locales.en.editNode); + this.manipulationDiv.appendChild(t), + this._bindHammerToDiv(t, this.editNode.bind(this)) + } + }, { + key: "_createEditEdgeButton", + value: function(e) { + var t = this._createButton("editEdge", "vis-button vis-edit", e.editEdge || this.options.locales.en.editEdge); + this.manipulationDiv.appendChild(t), + this._bindHammerToDiv(t, this.editEdgeMode.bind(this)) + } + }, { + key: "_createDeleteButton", + value: function(e) { + if (this.options.rtl) + var t = "vis-button vis-delete-rtl"; + else + var t = "vis-button vis-delete"; + var i = this._createButton("delete", t, e.del || this.options.locales.en.del); + this.manipulationDiv.appendChild(i), + this._bindHammerToDiv(i, this.deleteSelected.bind(this)) + } + }, { + key: "_createBackButton", + value: function(e) { + var t = this._createButton("back", "vis-button vis-back", e.back || this.options.locales.en.back); + this.manipulationDiv.appendChild(t), + this._bindHammerToDiv(t, this.showManipulatorToolbar.bind(this)) + } + }, { + key: "_createButton", + value: function(e, t, i) { + var o = arguments.length <= 3 || void 0 === arguments[3] ? "vis-label" : arguments[3]; + return this.manipulationDOM[e + "Div"] = document.createElement("div"), + this.manipulationDOM[e + "Div"].className = t, + this.manipulationDOM[e + "Label"] = document.createElement("div"), + this.manipulationDOM[e + "Label"].className = o, + this.manipulationDOM[e + "Label"].innerHTML = i, + this.manipulationDOM[e + "Div"].appendChild(this.manipulationDOM[e + "Label"]), + this.manipulationDOM[e + "Div"] + } + }, { + key: "_createDescription", + value: function(e) { + this.manipulationDiv.appendChild(this._createButton("description", "vis-button vis-none", e)) + } + }, { + key: "_temporaryBindEvent", + value: function(e, t) { + this.temporaryEventFunctions.push({ + event: e, + boundFunction: t + }), + this.body.emitter.on(e, t) + } + }, { + key: "_temporaryBindUI", + value: function(e, t) { + if (void 0 === this.body.eventListeners[e]) + throw new Error("This UI function does not exist. Typo? You tried: " + e + " possible are: " + JSON.stringify(Object.keys(this.body.eventListeners))); + this.temporaryUIFunctions[e] = this.body.eventListeners[e], + this.body.eventListeners[e] = t + } + }, { + key: "_unbindTemporaryUIs", + value: function() { + for (var e in this.temporaryUIFunctions) + this.temporaryUIFunctions.hasOwnProperty(e) && (this.body.eventListeners[e] = this.temporaryUIFunctions[e], + delete this.temporaryUIFunctions[e]); + this.temporaryUIFunctions = {} + } + }, { + key: "_unbindTemporaryEvents", + value: function() { + for (var e = 0; e < this.temporaryEventFunctions.length; e++) { + var t = this.temporaryEventFunctions[e].event + , i = this.temporaryEventFunctions[e].boundFunction; + this.body.emitter.off(t, i) + } + this.temporaryEventFunctions = [] + } + }, { + key: "_bindHammerToDiv", + value: function(e, t) { + var i = new r(e,{}); + a.onTouch(i, t), + this.manipulationHammers.push(i) + } + }, { + key: "_cleanupTemporaryNodesAndEdges", + value: function() { + for (var e = 0; e < this.temporaryIds.edges.length; e++) { + this.body.edges[this.temporaryIds.edges[e]].disconnect(), + delete this.body.edges[this.temporaryIds.edges[e]]; + var t = this.body.edgeIndices.indexOf(this.temporaryIds.edges[e]); + -1 !== t && this.body.edgeIndices.splice(t, 1) + } + for (var i = 0; i < this.temporaryIds.nodes.length; i++) { + delete this.body.nodes[this.temporaryIds.nodes[i]]; + var o = this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]); + -1 !== o && this.body.nodeIndices.splice(o, 1) + } + this.temporaryIds = { + nodes: [], + edges: [] + } + } + }, { + key: "_controlNodeTouch", + value: function(e) { + this.selectionHandler.unselectAll(), + this.lastTouch = this.body.functions.getPointer(e.center), + this.lastTouch.translation = s.extend({}, this.body.view.translation) + } + }, { + key: "_controlNodeDragStart", + value: function(e) { + var t = this.lastTouch + , i = this.selectionHandler._pointerToPositionObject(t) + , o = this.body.nodes[this.temporaryIds.nodes[0]] + , n = this.body.nodes[this.temporaryIds.nodes[1]] + , s = this.body.edges[this.edgeBeingEditedId]; + this.selectedControlNode = void 0; + var r = o.isOverlappingWith(i) + , a = n.isOverlappingWith(i); + r === !0 ? (this.selectedControlNode = o, + s.edgeType.from = o) : a === !0 && (this.selectedControlNode = n, + s.edgeType.to = n), + void 0 !== this.selectedControlNode && this.selectionHandler.selectObject(this.selectedControlNode), + this.body.emitter.emit("_redraw") + } + }, { + key: "_controlNodeDrag", + value: function(e) { + this.body.emitter.emit("disablePhysics"); + var t = this.body.functions.getPointer(e.center) + , i = this.canvas.DOMtoCanvas(t); + if (void 0 !== this.selectedControlNode) + this.selectedControlNode.x = i.x, + this.selectedControlNode.y = i.y; + else { + var o = t.x - this.lastTouch.x + , n = t.y - this.lastTouch.y; + this.body.view.translation = { + x: this.lastTouch.translation.x + o, + y: this.lastTouch.translation.y + n + } + } + this.body.emitter.emit("_redraw") + } + }, { + key: "_controlNodeDragEnd", + value: function(e) { + var t = this.body.functions.getPointer(e.center) + , i = this.selectionHandler._pointerToPositionObject(t) + , o = this.body.edges[this.edgeBeingEditedId]; + if (void 0 !== this.selectedControlNode) { + this.selectionHandler.unselectAll(); + for (var n = this.selectionHandler._getAllNodesOverlappingWith(i), s = void 0, r = n.length - 1; r >= 0; r--) + if (n[r] !== this.selectedControlNode.id) { + s = this.body.nodes[n[r]]; + break + } + if (void 0 !== s && void 0 !== this.selectedControlNode) + if (s.isCluster === !0) + alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError); + else { + var a = this.body.nodes[this.temporaryIds.nodes[0]]; + this.selectedControlNode.id === a.id ? this._performEditEdge(s.id, o.to.id) : this._performEditEdge(o.from.id, s.id) + } + else + o.updateEdgeType(), + this.body.emitter.emit("restorePhysics"); + this.body.emitter.emit("_redraw") + } + } + }, { + key: "_handleConnect", + value: function(e) { + if ((new Date).valueOf() - this.touchTime > 100) { + this.lastTouch = this.body.functions.getPointer(e.center), + this.lastTouch.translation = s.extend({}, this.body.view.translation); + var t = this.lastTouch + , i = this.selectionHandler.getNodeAt(t); + if (void 0 !== i) + if (i.isCluster === !0) + alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError); + else { + var o = this._getNewTargetNode(i.x, i.y); + this.body.nodes[o.id] = o, + this.body.nodeIndices.push(o.id); + var n = this.body.functions.createEdge({ + id: "connectionEdge" + s.randomUUID(), + from: i.id, + to: o.id, + physics: !1, + smooth: { + enabled: !0, + type: "continuous", + roundness: .5 + } + }); + this.body.edges[n.id] = n, + this.body.edgeIndices.push(n.id), + this.temporaryIds.nodes.push(o.id), + this.temporaryIds.edges.push(n.id) + } + this.touchTime = (new Date).valueOf() + } + } + }, { + key: "_dragControlNode", + value: function(e) { + var t = this.body.functions.getPointer(e.center); + if (void 0 !== this.temporaryIds.nodes[0]) { + var i = this.body.nodes[this.temporaryIds.nodes[0]]; + i.x = this.canvas._XconvertDOMtoCanvas(t.x), + i.y = this.canvas._YconvertDOMtoCanvas(t.y), + this.body.emitter.emit("_redraw") + } else { + var o = t.x - this.lastTouch.x + , n = t.y - this.lastTouch.y; + this.body.view.translation = { + x: this.lastTouch.translation.x + o, + y: this.lastTouch.translation.y + n + } + } + } + }, { + key: "_finishConnect", + value: function(e) { + var t = this.body.functions.getPointer(e.center) + , i = this.selectionHandler._pointerToPositionObject(t) + , o = void 0; + void 0 !== this.temporaryIds.edges[0] && (o = this.body.edges[this.temporaryIds.edges[0]].fromId); + for (var n = this.selectionHandler._getAllNodesOverlappingWith(i), s = void 0, r = n.length - 1; r >= 0; r--) + if (-1 === this.temporaryIds.nodes.indexOf(n[r])) { + s = this.body.nodes[n[r]]; + break + } + this._cleanupTemporaryNodesAndEdges(), + void 0 !== s && (s.isCluster === !0 ? alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError) : void 0 !== this.body.nodes[o] && void 0 !== this.body.nodes[s.id] && this._performAddEdge(o, s.id)), + this.body.emitter.emit("_redraw") + } + }, { + key: "_performAddNode", + value: function(e) { + var t = this + , i = { + id: s.randomUUID(), + x: e.pointer.canvas.x, + y: e.pointer.canvas.y, + label: "new" + }; + if ("function" == typeof this.options.addNode) { + if (2 !== this.options.addNode.length) + throw new Error("The function for add does not support two arguments (data,callback)"); + this.options.addNode(i, function(e) { + null !== e && void 0 !== e && "addNode" === t.inMode && (t.body.data.nodes.getDataSet().add(e), + t.showManipulatorToolbar()) + }) + } else + this.body.data.nodes.getDataSet().add(i), + this.showManipulatorToolbar() + } + }, { + key: "_performAddEdge", + value: function(e, t) { + var i = this + , o = { + from: e, + to: t + }; + if ("function" == typeof this.options.addEdge) { + if (2 !== this.options.addEdge.length) + throw new Error("The function for connect does not support two arguments (data,callback)"); + this.options.addEdge(o, function(e) { + null !== e && void 0 !== e && "addEdge" === i.inMode && (i.body.data.edges.getDataSet().add(e), + i.selectionHandler.unselectAll(), + i.showManipulatorToolbar()) + }) + } else + this.body.data.edges.getDataSet().add(o), + this.selectionHandler.unselectAll(), + this.showManipulatorToolbar() + } + }, { + key: "_performEditEdge", + value: function(e, t) { + var i = this + , o = { + id: this.edgeBeingEditedId, + from: e, + to: t + }; + if ("function" == typeof this.options.editEdge) { + if (2 !== this.options.editEdge.length) + throw new Error("The function for edit does not support two arguments (data, callback)"); + this.options.editEdge(o, function(e) { + null === e || void 0 === e || "editEdge" !== i.inMode ? (i.body.edges[o.id].updateEdgeType(), + i.body.emitter.emit("_redraw")) : (i.body.data.edges.getDataSet().update(e), + i.selectionHandler.unselectAll(), + i.showManipulatorToolbar()) + }) + } else + this.body.data.edges.getDataSet().update(o), + this.selectionHandler.unselectAll(), + this.showManipulatorToolbar() + } + }]), + e + }(); + t["default"] = h + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } + : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e + } + , r = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , a = i(71) + , h = o(a) + , d = i(1) + , l = function() { + function e(t, i, o) { + var s = arguments.length <= 3 || void 0 === arguments[3] ? 1 : arguments[3]; + n(this, e), + this.parent = t, + this.changedOptions = [], + this.container = i, + this.allowCreation = !1, + this.options = {}, + this.initialized = !1, + this.popupCounter = 0, + this.defaultOptions = { + enabled: !1, + filter: !0, + container: void 0, + showButton: !0 + }, + d.extend(this.options, this.defaultOptions), + this.configureOptions = o, + this.moduleOptions = {}, + this.domElements = [], + this.popupDiv = {}, + this.popupLimit = 5, + this.popupHistory = {}, + this.colorPicker = new h["default"](s), + this.wrapper = void 0 + } + return r(e, [{ + key: "setOptions", + value: function(e) { + if (void 0 !== e) { + this.popupHistory = {}, + this._removePopup(); + var t = !0; + "string" == typeof e ? this.options.filter = e : e instanceof Array ? this.options.filter = e.join() : "object" === ("undefined" == typeof e ? "undefined" : s(e)) ? (void 0 !== e.container && (this.options.container = e.container), + void 0 !== e.filter && (this.options.filter = e.filter), + void 0 !== e.showButton && (this.options.showButton = e.showButton), + void 0 !== e.enabled && (t = e.enabled)) : "boolean" == typeof e ? (this.options.filter = !0, + t = e) : "function" == typeof e && (this.options.filter = e, + t = !0), + this.options.filter === !1 && (t = !1), + this.options.enabled = t + } + this._clean() + } + }, { + key: "setModuleOptions", + value: function(e) { + this.moduleOptions = e, + this.options.enabled === !0 && (this._clean(), + void 0 !== this.options.container && (this.container = this.options.container), + this._create()) + } + }, { + key: "_create", + value: function() { + var e = this; + this._clean(), + this.changedOptions = []; + var t = this.options.filter + , i = 0 + , o = !1; + for (var n in this.configureOptions) + this.configureOptions.hasOwnProperty(n) && (this.allowCreation = !1, + o = !1, + "function" == typeof t ? (o = t(n, []), + o = o || this._handleObject(this.configureOptions[n], [n], !0)) : t !== !0 && -1 === t.indexOf(n) || (o = !0), + o !== !1 && (this.allowCreation = !0, + i > 0 && this._makeItem([]), + this._makeHeader(n), + this._handleObject(this.configureOptions[n], [n])), + i++); + this.options.showButton === !0 && !function() { + var t = document.createElement("div"); + t.className = "vis-configuration vis-config-button", + t.innerHTML = "generate options", + t.onclick = function() { + e._printOptions() + } + , + t.onmouseover = function() { + t.className = "vis-configuration vis-config-button hover" + } + , + t.onmouseout = function() { + t.className = "vis-configuration vis-config-button" + } + , + e.optionsContainer = document.createElement("div"), + e.optionsContainer.className = "vis-configuration vis-config-option-container", + e.domElements.push(e.optionsContainer), + e.domElements.push(t) + }(), + this._push() + } + }, { + key: "_push", + value: function() { + this.wrapper = document.createElement("div"), + this.wrapper.className = "vis-configuration-wrapper", + this.container.appendChild(this.wrapper); + for (var e = 0; e < this.domElements.length; e++) + this.wrapper.appendChild(this.domElements[e]); + this._showPopupIfNeeded() + } + }, { + key: "_clean", + value: function() { + for (var e = 0; e < this.domElements.length; e++) + this.wrapper.removeChild(this.domElements[e]); + void 0 !== this.wrapper && (this.container.removeChild(this.wrapper), + this.wrapper = void 0), + this.domElements = [], + this._removePopup() + } + }, { + key: "_getValue", + value: function(e) { + for (var t = this.moduleOptions, i = 0; i < e.length; i++) { + if (void 0 === t[e[i]]) { + t = void 0; + break + } + t = t[e[i]] + } + return t + } + }, { + key: "_makeItem", + value: function(e) { + var t = arguments + , i = this; + if (this.allowCreation === !0) { + var o, n, r, a = function() { + var s = document.createElement("div"); + for (s.className = "vis-configuration vis-config-item vis-config-s" + e.length, + o = t.length, + n = Array(o > 1 ? o - 1 : 0), + r = 1; o > r; r++) + n[r - 1] = t[r]; + return n.forEach(function(e) { + s.appendChild(e) + }), + i.domElements.push(s), + { + v: i.domElements.length + } + }(); + if ("object" === ("undefined" == typeof a ? "undefined" : s(a))) + return a.v + } + return 0 + } + }, { + key: "_makeHeader", + value: function(e) { + var t = document.createElement("div"); + t.className = "vis-configuration vis-config-header", + t.innerHTML = e, + this._makeItem([], t) + } + }, { + key: "_makeLabel", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = document.createElement("div"); + return o.className = "vis-configuration vis-config-label vis-config-s" + t.length, + i === !0 ? o.innerHTML = "" + e + ":" : o.innerHTML = e + ":", + o + } + }, { + key: "_makeDropdown", + value: function(e, t, i) { + var o = document.createElement("select"); + o.className = "vis-configuration vis-config-select"; + var n = 0; + void 0 !== t && -1 !== e.indexOf(t) && (n = e.indexOf(t)); + for (var s = 0; s < e.length; s++) { + var r = document.createElement("option"); + r.value = e[s], + s === n && (r.selected = "selected"), + r.innerHTML = e[s], + o.appendChild(r) + } + var a = this; + o.onchange = function() { + a._update(this.value, i) + } + ; + var h = this._makeLabel(i[i.length - 1], i); + this._makeItem(i, h, o) + } + }, { + key: "_makeRange", + value: function(e, t, i) { + var o = e[0] + , n = e[1] + , s = e[2] + , r = e[3] + , a = document.createElement("input"); + a.className = "vis-configuration vis-config-range"; + try { + a.type = "range", + a.min = n, + a.max = s + } catch (h) {} + a.step = r; + var d = "" + , l = 0; + if (void 0 !== t) { + var c = 1.2; + 0 > t && n > t * c ? (a.min = Math.ceil(t * c), + l = a.min, + d = "range increased") : n > t / c && (a.min = Math.ceil(t / c), + l = a.min, + d = "range increased"), + t * c > s && 1 !== s && (a.max = Math.ceil(t * c), + l = a.max, + d = "range increased"), + a.value = t + } else + a.value = o; + var u = document.createElement("input"); + u.className = "vis-configuration vis-config-rangeinput", + u.value = a.value; + var f = this; + a.onchange = function() { + u.value = this.value, + f._update(Number(this.value), i) + } + , + a.oninput = function() { + u.value = this.value + } + ; + var p = this._makeLabel(i[i.length - 1], i) + , v = this._makeItem(i, p, a, u); + "" !== d && this.popupHistory[v] !== l && (this.popupHistory[v] = l, + this._setupPopup(d, v)) + } + }, { + key: "_setupPopup", + value: function(e, t) { + var i = this; + if (this.initialized === !0 && this.allowCreation === !0 && this.popupCounter < this.popupLimit) { + var o = document.createElement("div"); + o.id = "vis-configuration-popup", + o.className = "vis-configuration-popup", + o.innerHTML = e, + o.onclick = function() { + i._removePopup() + } + , + this.popupCounter += 1, + this.popupDiv = { + html: o, + index: t + } + } + } + }, { + key: "_removePopup", + value: function() { + void 0 !== this.popupDiv.html && (this.popupDiv.html.parentNode.removeChild(this.popupDiv.html), + clearTimeout(this.popupDiv.hideTimeout), + clearTimeout(this.popupDiv.deleteTimeout), + this.popupDiv = {}) + } + }, { + key: "_showPopupIfNeeded", + value: function() { + var e = this; + if (void 0 !== this.popupDiv.html) { + var t = this.domElements[this.popupDiv.index] + , i = t.getBoundingClientRect(); + this.popupDiv.html.style.left = i.left + "px", + this.popupDiv.html.style.top = i.top - 30 + "px", + document.body.appendChild(this.popupDiv.html), + this.popupDiv.hideTimeout = setTimeout(function() { + e.popupDiv.html.style.opacity = 0 + }, 1500), + this.popupDiv.deleteTimeout = setTimeout(function() { + e._removePopup() + }, 1800) + } + } + }, { + key: "_makeCheckbox", + value: function(e, t, i) { + var o = document.createElement("input"); + o.type = "checkbox", + o.className = "vis-configuration vis-config-checkbox", + o.checked = e, + void 0 !== t && (o.checked = t, + t !== e && ("object" === ("undefined" == typeof e ? "undefined" : s(e)) ? t !== e.enabled && this.changedOptions.push({ + path: i, + value: t + }) : this.changedOptions.push({ + path: i, + value: t + }))); + var n = this; + o.onchange = function() { + n._update(this.checked, i) + } + ; + var r = this._makeLabel(i[i.length - 1], i); + this._makeItem(i, r, o) + } + }, { + key: "_makeTextInput", + value: function(e, t, i) { + var o = document.createElement("input"); + o.type = "text", + o.className = "vis-configuration vis-config-text", + o.value = t, + t !== e && this.changedOptions.push({ + path: i, + value: t + }); + var n = this; + o.onchange = function() { + n._update(this.value, i) + } + ; + var s = this._makeLabel(i[i.length - 1], i); + this._makeItem(i, s, o) + } + }, { + key: "_makeColorField", + value: function(e, t, i) { + var o = this + , n = e[1] + , s = document.createElement("div"); + t = void 0 === t ? n : t, + "none" !== t ? (s.className = "vis-configuration vis-config-colorBlock", + s.style.backgroundColor = t) : s.className = "vis-configuration vis-config-colorBlock none", + t = void 0 === t ? n : t, + s.onclick = function() { + o._showColorPicker(t, s, i) + } + ; + var r = this._makeLabel(i[i.length - 1], i); + this._makeItem(i, r, s) + } + }, { + key: "_showColorPicker", + value: function(e, t, i) { + var o = this; + t.onclick = function() {} + , + this.colorPicker.insertTo(t), + this.colorPicker.show(), + this.colorPicker.setColor(e), + this.colorPicker.setUpdateCallback(function(e) { + var n = "rgba(" + e.r + "," + e.g + "," + e.b + "," + e.a + ")"; + t.style.backgroundColor = n, + o._update(n, i) + }), + this.colorPicker.setCloseCallback(function() { + t.onclick = function() { + o._showColorPicker(e, t, i) + } + }) + } + }, { + key: "_handleObject", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? [] : arguments[1] + , i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = !1 + , n = this.options.filter + , s = !1; + for (var r in e) + if (e.hasOwnProperty(r)) { + o = !0; + var a = e[r] + , h = d.copyAndExtendArray(t, r); + if ("function" == typeof n && (o = n(r, t), + o === !1 && !(a instanceof Array) && "string" != typeof a && "boolean" != typeof a && a instanceof Object && (this.allowCreation = !1, + o = this._handleObject(a, h, !0), + this.allowCreation = i === !1)), + o !== !1) { + s = !0; + var l = this._getValue(h); + if (a instanceof Array) + this._handleArray(a, l, h); + else if ("string" == typeof a) + this._makeTextInput(a, l, h); + else if ("boolean" == typeof a) + this._makeCheckbox(a, l, h); + else if (a instanceof Object) { + var c = !0; + if (-1 !== t.indexOf("physics") && this.moduleOptions.physics.solver !== r && (c = !1), + c === !0) + if (void 0 !== a.enabled) { + var u = d.copyAndExtendArray(h, "enabled") + , f = this._getValue(u); + if (f === !0) { + var p = this._makeLabel(r, h, !0); + this._makeItem(h, p), + s = this._handleObject(a, h) || s + } else + this._makeCheckbox(a, f, h) + } else { + var v = this._makeLabel(r, h, !0); + this._makeItem(h, v), + s = this._handleObject(a, h) || s + } + } else + console.error("dont know how to handle", a, r, h) + } + } + return s + } + }, { + key: "_handleArray", + value: function(e, t, i) { + "string" == typeof e[0] && "color" === e[0] ? (this._makeColorField(e, t, i), + e[1] !== t && this.changedOptions.push({ + path: i, + value: t + })) : "string" == typeof e[0] ? (this._makeDropdown(e, t, i), + e[0] !== t && this.changedOptions.push({ + path: i, + value: t + })) : "number" == typeof e[0] && (this._makeRange(e, t, i), + e[0] !== t && this.changedOptions.push({ + path: i, + value: Number(t) + })) + } + }, { + key: "_update", + value: function(e, t) { + var i = this._constructOptions(e, t); + this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit && this.parent.body.emitter.emit("configChange", i), + this.initialized = !0, + this.parent.setOptions(i) + } + }, { + key: "_constructOptions", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? {} : arguments[2] + , o = i; + e = "true" === e ? !0 : e, + e = "false" === e ? !1 : e; + for (var n = 0; n < t.length; n++) + "global" !== t[n] && (void 0 === o[t[n]] && (o[t[n]] = {}), + n !== t.length - 1 ? o = o[t[n]] : o[t[n]] = e); + return i + } + }, { + key: "_printOptions", + value: function() { + var e = this.getOptions(); + this.optionsContainer.innerHTML = "
var options = " + JSON.stringify(e, null, 2) + "
" + } + }, { + key: "getOptions", + value: function() { + for (var e = {}, t = 0; t < this.changedOptions.length; t++) + this._constructOptions(this.changedOptions[t].value, this.changedOptions[t].path, e); + return e + } + }]), + e + }(); + t["default"] = l + } + , function(e, t, i) { + function o(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var n = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , s = i(58) + , r = i(61) + , a = i(1) + , h = function() { + function e() { + var t = arguments.length <= 0 || void 0 === arguments[0] ? 1 : arguments[0]; + o(this, e), + this.pixelRatio = t, + this.generated = !1, + this.centerCoordinates = { + x: 144.5, + y: 144.5 + }, + this.r = 289 * .49, + this.color = { + r: 255, + g: 255, + b: 255, + a: 1 + }, + this.hueCircle = void 0, + this.initialColor = { + r: 255, + g: 255, + b: 255, + a: 1 + }, + this.previousColor = void 0, + this.applied = !1, + this.updateCallback = function() {} + , + this.closeCallback = function() {} + , + this._create() + } + return n(e, [{ + key: "insertTo", + value: function(e) { + void 0 !== this.hammer && (this.hammer.destroy(), + this.hammer = void 0), + this.container = e, + this.container.appendChild(this.frame), + this._bindHammer(), + this._setSize() + } + }, { + key: "setUpdateCallback", + value: function(e) { + if ("function" != typeof e) + throw new Error("Function attempted to set as colorPicker update callback is not a function."); + this.updateCallback = e + } + }, { + key: "setCloseCallback", + value: function(e) { + if ("function" != typeof e) + throw new Error("Function attempted to set as colorPicker closing callback is not a function."); + this.closeCallback = e + } + }, { + key: "_isColorString", + value: function(e) { + var t = { + black: "#000000", + navy: "#000080", + darkblue: "#00008B", + mediumblue: "#0000CD", + blue: "#0000FF", + darkgreen: "#006400", + green: "#008000", + teal: "#008080", + darkcyan: "#008B8B", + deepskyblue: "#00BFFF", + darkturquoise: "#00CED1", + mediumspringgreen: "#00FA9A", + lime: "#00FF00", + springgreen: "#00FF7F", + aqua: "#00FFFF", + cyan: "#00FFFF", + midnightblue: "#191970", + dodgerblue: "#1E90FF", + lightseagreen: "#20B2AA", + forestgreen: "#228B22", + seagreen: "#2E8B57", + darkslategray: "#2F4F4F", + limegreen: "#32CD32", + mediumseagreen: "#3CB371", + turquoise: "#40E0D0", + royalblue: "#4169E1", + steelblue: "#4682B4", + darkslateblue: "#483D8B", + mediumturquoise: "#48D1CC", + indigo: "#4B0082", + darkolivegreen: "#556B2F", + cadetblue: "#5F9EA0", + cornflowerblue: "#6495ED", + mediumaquamarine: "#66CDAA", + dimgray: "#696969", + slateblue: "#6A5ACD", + olivedrab: "#6B8E23", + slategray: "#708090", + lightslategray: "#778899", + mediumslateblue: "#7B68EE", + lawngreen: "#7CFC00", + chartreuse: "#7FFF00", + aquamarine: "#7FFFD4", + maroon: "#800000", + purple: "#800080", + olive: "#808000", + gray: "#808080", + skyblue: "#87CEEB", + lightskyblue: "#87CEFA", + blueviolet: "#8A2BE2", + darkred: "#8B0000", + darkmagenta: "#8B008B", + saddlebrown: "#8B4513", + darkseagreen: "#8FBC8F", + lightgreen: "#90EE90", + mediumpurple: "#9370D8", + darkviolet: "#9400D3", + palegreen: "#98FB98", + darkorchid: "#9932CC", + yellowgreen: "#9ACD32", + sienna: "#A0522D", + brown: "#A52A2A", + darkgray: "#A9A9A9", + lightblue: "#ADD8E6", + greenyellow: "#ADFF2F", + paleturquoise: "#AFEEEE", + lightsteelblue: "#B0C4DE", + powderblue: "#B0E0E6", + firebrick: "#B22222", + darkgoldenrod: "#B8860B", + mediumorchid: "#BA55D3", + rosybrown: "#BC8F8F", + darkkhaki: "#BDB76B", + silver: "#C0C0C0", + mediumvioletred: "#C71585", + indianred: "#CD5C5C", + peru: "#CD853F", + chocolate: "#D2691E", + tan: "#D2B48C", + lightgrey: "#D3D3D3", + palevioletred: "#D87093", + thistle: "#D8BFD8", + orchid: "#DA70D6", + goldenrod: "#DAA520", + crimson: "#DC143C", + gainsboro: "#DCDCDC", + plum: "#DDA0DD", + burlywood: "#DEB887", + lightcyan: "#E0FFFF", + lavender: "#E6E6FA", + darksalmon: "#E9967A", + violet: "#EE82EE", + palegoldenrod: "#EEE8AA", + lightcoral: "#F08080", + khaki: "#F0E68C", + aliceblue: "#F0F8FF", + honeydew: "#F0FFF0", + azure: "#F0FFFF", + sandybrown: "#F4A460", + wheat: "#F5DEB3", + beige: "#F5F5DC", + whitesmoke: "#F5F5F5", + mintcream: "#F5FFFA", + ghostwhite: "#F8F8FF", + salmon: "#FA8072", + antiquewhite: "#FAEBD7", + linen: "#FAF0E6", + lightgoldenrodyellow: "#FAFAD2", + oldlace: "#FDF5E6", + red: "#FF0000", + fuchsia: "#FF00FF", + magenta: "#FF00FF", + deeppink: "#FF1493", + orangered: "#FF4500", + tomato: "#FF6347", + hotpink: "#FF69B4", + coral: "#FF7F50", + darkorange: "#FF8C00", + lightsalmon: "#FFA07A", + orange: "#FFA500", + lightpink: "#FFB6C1", + pink: "#FFC0CB", + gold: "#FFD700", + peachpuff: "#FFDAB9", + navajowhite: "#FFDEAD", + moccasin: "#FFE4B5", + bisque: "#FFE4C4", + mistyrose: "#FFE4E1", + blanchedalmond: "#FFEBCD", + papayawhip: "#FFEFD5", + lavenderblush: "#FFF0F5", + seashell: "#FFF5EE", + cornsilk: "#FFF8DC", + lemonchiffon: "#FFFACD", + floralwhite: "#FFFAF0", + snow: "#FFFAFA", + yellow: "#FFFF00", + lightyellow: "#FFFFE0", + ivory: "#FFFFF0", + white: "#FFFFFF" + }; + return "string" == typeof e ? t[e] : void 0 + } + }, { + key: "setColor", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + if ("none" !== e) { + var i = void 0 + , o = this._isColorString(e); + if (void 0 !== o && (e = o), + a.isString(e) === !0) { + if (a.isValidRGB(e) === !0) { + var n = e.substr(4).substr(0, e.length - 5).split(","); + i = { + r: n[0], + g: n[1], + b: n[2], + a: 1 + } + } else if (a.isValidRGBA(e) === !0) { + var s = e.substr(5).substr(0, e.length - 6).split(","); + i = { + r: s[0], + g: s[1], + b: s[2], + a: s[3] + } + } else if (a.isValidHex(e) === !0) { + var r = a.hexToRGB(e); + i = { + r: r.r, + g: r.g, + b: r.b, + a: 1 + } + } + } else if (e instanceof Object && void 0 !== e.r && void 0 !== e.g && void 0 !== e.b) { + var h = void 0 !== e.a ? e.a : "1.0"; + i = { + r: e.r, + g: e.g, + b: e.b, + a: h + } + } + if (void 0 === i) + throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: " + JSON.stringify(e)); + this._setColor(i, t) + } + } + }, { + key: "show", + value: function() { + void 0 !== this.closeCallback && (this.closeCallback(), + this.closeCallback = void 0), + this.applied = !1, + this.frame.style.display = "block", + this._generateHueCircle() + } + }, { + key: "_hide", + value: function() { + var e = this + , t = arguments.length <= 0 || void 0 === arguments[0] ? !0 : arguments[0]; + t === !0 && (this.previousColor = a.extend({}, this.color)), + this.applied === !0 && this.updateCallback(this.initialColor), + this.frame.style.display = "none", + setTimeout(function() { + void 0 !== e.closeCallback && (e.closeCallback(), + e.closeCallback = void 0) + }, 0) + } + }, { + key: "_save", + value: function() { + this.updateCallback(this.color), + this.applied = !1, + this._hide() + } + }, { + key: "_apply", + value: function() { + this.applied = !0, + this.updateCallback(this.color), + this._updatePicker(this.color) + } + }, { + key: "_loadLast", + value: function() { + void 0 !== this.previousColor ? this.setColor(this.previousColor, !1) : alert("There is no last color to load...") + } + }, { + key: "_setColor", + value: function(e) { + var t = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1]; + t === !0 && (this.initialColor = a.extend({}, e)), + this.color = e; + var i = a.RGBToHSV(e.r, e.g, e.b) + , o = 2 * Math.PI + , n = this.r * i.s + , s = this.centerCoordinates.x + n * Math.sin(o * i.h) + , r = this.centerCoordinates.y + n * Math.cos(o * i.h); + this.colorPickerSelector.style.left = s - .5 * this.colorPickerSelector.clientWidth + "px", + this.colorPickerSelector.style.top = r - .5 * this.colorPickerSelector.clientHeight + "px", + this._updatePicker(e) + } + }, { + key: "_setOpacity", + value: function(e) { + this.color.a = e / 100, + this._updatePicker(this.color) + } + }, { + key: "_setBrightness", + value: function(e) { + var t = a.RGBToHSV(this.color.r, this.color.g, this.color.b); + t.v = e / 100; + var i = a.HSVToRGB(t.h, t.s, t.v); + i.a = this.color.a, + this.color = i, + this._updatePicker() + } + }, { + key: "_updatePicker", + value: function() { + var e = arguments.length <= 0 || void 0 === arguments[0] ? this.color : arguments[0] + , t = a.RGBToHSV(e.r, e.g, e.b) + , i = this.colorPickerCanvas.getContext("2d"); + void 0 === this.pixelRation && (this.pixelRatio = (window.devicePixelRatio || 1) / (i.webkitBackingStorePixelRatio || i.mozBackingStorePixelRatio || i.msBackingStorePixelRatio || i.oBackingStorePixelRatio || i.backingStorePixelRatio || 1)), + i.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + var o = this.colorPickerCanvas.clientWidth + , n = this.colorPickerCanvas.clientHeight; + i.clearRect(0, 0, o, n), + i.putImageData(this.hueCircle, 0, 0), + i.fillStyle = "rgba(0,0,0," + (1 - t.v) + ")", + i.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r), + i.fill(), + this.brightnessRange.value = 100 * t.v, + this.opacityRange.value = 100 * e.a, + this.initialColorDiv.style.backgroundColor = "rgba(" + this.initialColor.r + "," + this.initialColor.g + "," + this.initialColor.b + "," + this.initialColor.a + ")", + this.newColorDiv.style.backgroundColor = "rgba(" + this.color.r + "," + this.color.g + "," + this.color.b + "," + this.color.a + ")" + } + }, { + key: "_setSize", + value: function() { + this.colorPickerCanvas.style.width = "100%", + this.colorPickerCanvas.style.height = "100%", + this.colorPickerCanvas.width = 289 * this.pixelRatio, + this.colorPickerCanvas.height = 289 * this.pixelRatio + } + }, { + key: "_create", + value: function() { + if (this.frame = document.createElement("div"), + this.frame.className = "vis-color-picker", + this.colorPickerDiv = document.createElement("div"), + this.colorPickerSelector = document.createElement("div"), + this.colorPickerSelector.className = "vis-selector", + this.colorPickerDiv.appendChild(this.colorPickerSelector), + this.colorPickerCanvas = document.createElement("canvas"), + this.colorPickerDiv.appendChild(this.colorPickerCanvas), + this.colorPickerCanvas.getContext) { + var e = this.colorPickerCanvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1), + this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0) + } else { + 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.colorPickerCanvas.appendChild(t) + } + this.colorPickerDiv.className = "vis-color", + this.opacityDiv = document.createElement("div"), + this.opacityDiv.className = "vis-opacity", + this.brightnessDiv = document.createElement("div"), + this.brightnessDiv.className = "vis-brightness", + this.arrowDiv = document.createElement("div"), + this.arrowDiv.className = "vis-arrow", + this.opacityRange = document.createElement("input"); + try { + this.opacityRange.type = "range", + this.opacityRange.min = "0", + this.opacityRange.max = "100" + } catch (i) {} + this.opacityRange.value = "100", + this.opacityRange.className = "vis-range", + this.brightnessRange = document.createElement("input"); + try { + this.brightnessRange.type = "range", + this.brightnessRange.min = "0", + this.brightnessRange.max = "100" + } catch (i) {} + this.brightnessRange.value = "100", + this.brightnessRange.className = "vis-range", + this.opacityDiv.appendChild(this.opacityRange), + this.brightnessDiv.appendChild(this.brightnessRange); + var o = this; + this.opacityRange.onchange = function() { + o._setOpacity(this.value) + } + , + this.opacityRange.oninput = function() { + o._setOpacity(this.value) + } + , + this.brightnessRange.onchange = function() { + o._setBrightness(this.value) + } + , + this.brightnessRange.oninput = function() { + o._setBrightness(this.value) + } + , + this.brightnessLabel = document.createElement("div"), + this.brightnessLabel.className = "vis-label vis-brightness", + this.brightnessLabel.innerHTML = "brightness:", + this.opacityLabel = document.createElement("div"), + this.opacityLabel.className = "vis-label vis-opacity", + this.opacityLabel.innerHTML = "opacity:", + this.newColorDiv = document.createElement("div"), + this.newColorDiv.className = "vis-new-color", + this.newColorDiv.innerHTML = "new", + this.initialColorDiv = document.createElement("div"), + this.initialColorDiv.className = "vis-initial-color", + this.initialColorDiv.innerHTML = "initial", + this.cancelButton = document.createElement("div"), + this.cancelButton.className = "vis-button vis-cancel", + this.cancelButton.innerHTML = "cancel", + this.cancelButton.onclick = this._hide.bind(this, !1), + this.applyButton = document.createElement("div"), + this.applyButton.className = "vis-button vis-apply", + this.applyButton.innerHTML = "apply", + this.applyButton.onclick = this._apply.bind(this), + this.saveButton = document.createElement("div"), + this.saveButton.className = "vis-button vis-save", + this.saveButton.innerHTML = "save", + this.saveButton.onclick = this._save.bind(this), + this.loadButton = document.createElement("div"), + this.loadButton.className = "vis-button vis-load", + this.loadButton.innerHTML = "load last", + this.loadButton.onclick = this._loadLast.bind(this), + this.frame.appendChild(this.colorPickerDiv), + this.frame.appendChild(this.arrowDiv), + this.frame.appendChild(this.brightnessLabel), + this.frame.appendChild(this.brightnessDiv), + this.frame.appendChild(this.opacityLabel), + this.frame.appendChild(this.opacityDiv), + this.frame.appendChild(this.newColorDiv), + this.frame.appendChild(this.initialColorDiv), + this.frame.appendChild(this.cancelButton), + this.frame.appendChild(this.applyButton), + this.frame.appendChild(this.saveButton), + this.frame.appendChild(this.loadButton) + } + }, { + key: "_bindHammer", + value: function() { + var e = this; + this.drag = {}, + this.pinch = {}, + this.hammer = new s(this.colorPickerCanvas), + this.hammer.get("pinch").set({ + enable: !0 + }), + r.onTouch(this.hammer, function(t) { + e._moveSelector(t) + }), + this.hammer.on("tap", function(t) { + e._moveSelector(t) + }), + this.hammer.on("panstart", function(t) { + e._moveSelector(t) + }), + this.hammer.on("panmove", function(t) { + e._moveSelector(t) + }), + this.hammer.on("panend", function(t) { + e._moveSelector(t) + }) + } + }, { + key: "_generateHueCircle", + value: function() { + if (this.generated === !1) { + var e = this.colorPickerCanvas.getContext("2d"); + void 0 === this.pixelRation && (this.pixelRatio = (window.devicePixelRatio || 1) / (e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1)), + e.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + var t = this.colorPickerCanvas.clientWidth + , i = this.colorPickerCanvas.clientHeight; + e.clearRect(0, 0, t, i); + var o = void 0 + , n = void 0 + , s = void 0 + , r = void 0; + this.centerCoordinates = { + x: .5 * t, + y: .5 * i + }, + this.r = .49 * t; + var h = 2 * Math.PI / 360 + , d = 1 / 360 + , l = 1 / this.r + , c = void 0; + for (s = 0; 360 > s; s++) + for (r = 0; r < this.r; r++) + o = this.centerCoordinates.x + r * Math.sin(h * s), + n = this.centerCoordinates.y + r * Math.cos(h * s), + c = a.HSVToRGB(s * d, r * l, 1), + e.fillStyle = "rgb(" + c.r + "," + c.g + "," + c.b + ")", + e.fillRect(o - .5, n - .5, 2, 2); + e.strokeStyle = "rgba(0,0,0,1)", + e.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r), + e.stroke(), + this.hueCircle = e.getImageData(0, 0, t, i) + } + this.generated = !0 + } + }, { + key: "_moveSelector", + value: function(e) { + var t = this.colorPickerDiv.getBoundingClientRect() + , i = e.center.x - t.left + , o = e.center.y - t.top + , n = .5 * this.colorPickerDiv.clientHeight + , s = .5 * this.colorPickerDiv.clientWidth + , r = i - s + , h = o - n + , d = Math.atan2(r, h) + , l = .98 * Math.min(Math.sqrt(r * r + h * h), s) + , c = Math.cos(d) * l + n + , u = Math.sin(d) * l + s; + this.colorPickerSelector.style.top = c - .5 * this.colorPickerSelector.clientHeight + "px", + this.colorPickerSelector.style.left = u - .5 * this.colorPickerSelector.clientWidth + "px"; + var f = d / (2 * Math.PI); + f = 0 > f ? f + 1 : f; + var p = l / this.r + , v = a.RGBToHSV(this.color.r, this.color.g, this.color.b); + v.h = f, + v.s = p; + var y = a.HSVToRGB(v.h, v.s, v.v); + y.a = this.color.a, + this.color = y, + this.initialColorDiv.style.backgroundColor = "rgba(" + this.initialColor.r + "," + this.initialColor.g + "," + this.initialColor.b + "," + this.initialColor.a + ")", + this.newColorDiv.style.backgroundColor = "rgba(" + this.color.r + "," + this.color.g + "," + this.color.b + "," + this.color.a + ")" + } + }]), + e + }(); + t["default"] = h + } + , function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var i = "string" + , o = "boolean" + , n = "number" + , s = "array" + , r = "object" + , a = "dom" + , h = "any" + , d = { + configure: { + enabled: { + "boolean": o + }, + filter: { + "boolean": o, + string: i, + array: s, + "function": "function" + }, + container: { + dom: a + }, + showButton: { + "boolean": o + }, + __type__: { + object: r, + "boolean": o, + string: i, + array: s, + "function": "function" + } + }, + edges: { + arrows: { + to: { + enabled: { + "boolean": o + }, + scaleFactor: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + middle: { + enabled: { + "boolean": o + }, + scaleFactor: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + from: { + enabled: { + "boolean": o + }, + scaleFactor: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + __type__: { + string: ["from", "to", "middle"], + object: r + } + }, + arrowStrikethrough: { + "boolean": o + }, + color: { + color: { + string: i + }, + highlight: { + string: i + }, + hover: { + string: i + }, + inherit: { + string: ["from", "to", "both"], + "boolean": o + }, + opacity: { + number: n + }, + __type__: { + object: r, + string: i + } + }, + dashes: { + "boolean": o, + array: s + }, + font: { + color: { + string: i + }, + size: { + number: n + }, + face: { + string: i + }, + background: { + string: i + }, + strokeWidth: { + number: n + }, + strokeColor: { + string: i + }, + align: { + string: ["horizontal", "top", "middle", "bottom"] + }, + __type__: { + object: r, + string: i + } + }, + hidden: { + "boolean": o + }, + hoverWidth: { + "function": "function", + number: n + }, + label: { + string: i, + undefined: "undefined" + }, + labelHighlightBold: { + "boolean": o + }, + length: { + number: n, + undefined: "undefined" + }, + physics: { + "boolean": o + }, + scaling: { + min: { + number: n + }, + max: { + number: n + }, + label: { + enabled: { + "boolean": o + }, + min: { + number: n + }, + max: { + number: n + }, + maxVisible: { + number: n + }, + drawThreshold: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + customScalingFunction: { + "function": "function" + }, + __type__: { + object: r + } + }, + selectionWidth: { + "function": "function", + number: n + }, + selfReferenceSize: { + number: n + }, + shadow: { + enabled: { + "boolean": o + }, + color: { + string: i + }, + size: { + number: n + }, + x: { + number: n + }, + y: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + smooth: { + enabled: { + "boolean": o + }, + type: { + string: ["dynamic", "continuous", "discrete", "diagonalCross", "straightCross", "horizontal", "vertical", "curvedCW", "curvedCCW", "cubicBezier"] + }, + roundness: { + number: n + }, + forceDirection: { + string: ["horizontal", "vertical", "none"], + "boolean": o + }, + __type__: { + object: r, + "boolean": o + } + }, + title: { + string: i, + undefined: "undefined" + }, + width: { + number: n + }, + value: { + number: n, + undefined: "undefined" + }, + __type__: { + object: r + } + }, + groups: { + useDefaultGroups: { + "boolean": o + }, + __any__: "get from nodes, will be overwritten below", + __type__: { + object: r + } + }, + interaction: { + dragNodes: { + "boolean": o + }, + dragView: { + "boolean": o + }, + hideEdgesOnDrag: { + "boolean": o + }, + hideNodesOnDrag: { + "boolean": o + }, + hover: { + "boolean": o + }, + keyboard: { + enabled: { + "boolean": o + }, + speed: { + x: { + number: n + }, + y: { + number: n + }, + zoom: { + number: n + }, + __type__: { + object: r + } + }, + bindToWindow: { + "boolean": o + }, + __type__: { + object: r, + "boolean": o + } + }, + multiselect: { + "boolean": o + }, + navigationButtons: { + "boolean": o + }, + selectable: { + "boolean": o + }, + selectConnectedEdges: { + "boolean": o + }, + hoverConnectedEdges: { + "boolean": o + }, + tooltipDelay: { + number: n + }, + zoomView: { + "boolean": o + }, + __type__: { + object: r + } + }, + layout: { + randomSeed: { + undefined: "undefined", + number: n + }, + improvedLayout: { + "boolean": o + }, + hierarchical: { + enabled: { + "boolean": o + }, + levelSeparation: { + number: n + }, + nodeSpacing: { + number: n + }, + treeSpacing: { + number: n + }, + blockShifting: { + "boolean": o + }, + edgeMinimization: { + "boolean": o + }, + parentCentralization: { + "boolean": o + }, + direction: { + string: ["UD", "DU", "LR", "RL"] + }, + sortMethod: { + string: ["hubsize", "directed"] + }, + __type__: { + object: r, + "boolean": o + } + }, + __type__: { + object: r + } + }, + manipulation: { + enabled: { + "boolean": o + }, + initiallyActive: { + "boolean": o + }, + addNode: { + "boolean": o, + "function": "function" + }, + addEdge: { + "boolean": o, + "function": "function" + }, + editNode: { + "function": "function" + }, + editEdge: { + "boolean": o, + "function": "function" + }, + deleteNode: { + "boolean": o, + "function": "function" + }, + deleteEdge: { + "boolean": o, + "function": "function" + }, + controlNodeStyle: "get from nodes, will be overwritten below", + __type__: { + object: r, + "boolean": o + } + }, + nodes: { + borderWidth: { + number: n + }, + borderWidthSelected: { + number: n, + undefined: "undefined" + }, + brokenImage: { + string: i, + undefined: "undefined" + }, + color: { + border: { + string: i + }, + background: { + string: i + }, + highlight: { + border: { + string: i + }, + background: { + string: i + }, + __type__: { + object: r, + string: i + } + }, + hover: { + border: { + string: i + }, + background: { + string: i + }, + __type__: { + object: r, + string: i + } + }, + __type__: { + object: r, + string: i + } + }, + fixed: { + x: { + "boolean": o + }, + y: { + "boolean": o + }, + __type__: { + object: r, + "boolean": o + } + }, + font: { + align: { + string: i + }, + color: { + string: i + }, + size: { + number: n + }, + face: { + string: i + }, + background: { + string: i + }, + strokeWidth: { + number: n + }, + strokeColor: { + string: i + }, + __type__: { + object: r, + string: i + } + }, + group: { + string: i, + number: n, + undefined: "undefined" + }, + hidden: { + "boolean": o + }, + icon: { + face: { + string: i + }, + code: { + string: i + }, + size: { + number: n + }, + color: { + string: i + }, + __type__: { + object: r + } + }, + id: { + string: i, + number: n + }, + image: { + string: i, + undefined: "undefined" + }, + label: { + string: i, + undefined: "undefined" + }, + labelHighlightBold: { + "boolean": o + }, + level: { + number: n, + undefined: "undefined" + }, + mass: { + number: n + }, + physics: { + "boolean": o + }, + scaling: { + min: { + number: n + }, + max: { + number: n + }, + label: { + enabled: { + "boolean": o + }, + min: { + number: n + }, + max: { + number: n + }, + maxVisible: { + number: n + }, + drawThreshold: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + customScalingFunction: { + "function": "function" + }, + __type__: { + object: r + } + }, + shadow: { + enabled: { + "boolean": o + }, + color: { + string: i + }, + size: { + number: n + }, + x: { + number: n + }, + y: { + number: n + }, + __type__: { + object: r, + "boolean": o + } + }, + shape: { + string: ["ellipse", "circle", "database", "box", "text", "image", "circularImage", "diamond", "dot", "star", "triangle", "triangleDown", "square", "icon"] + }, + shapeProperties: { + borderDashes: { + "boolean": o, + array: s + }, + borderRadius: { + number: n + }, + interpolation: { + "boolean": o + }, + useImageSize: { + "boolean": o + }, + useBorderWithImage: { + "boolean": o + }, + __type__: { + object: r + } + }, + size: { + number: n + }, + title: { + string: i, + undefined: "undefined" + }, + value: { + number: n, + undefined: "undefined" + }, + x: { + number: n + }, + y: { + number: n + }, + __type__: { + object: r + } + }, + physics: { + enabled: { + "boolean": o + }, + barnesHut: { + gravitationalConstant: { + number: n + }, + centralGravity: { + number: n + }, + springLength: { + number: n + }, + springConstant: { + number: n + }, + damping: { + number: n + }, + avoidOverlap: { + number: n + }, + __type__: { + object: r + } + }, + forceAtlas2Based: { + gravitationalConstant: { + number: n + }, + centralGravity: { + number: n + }, + springLength: { + number: n + }, + springConstant: { + number: n + }, + damping: { + number: n + }, + avoidOverlap: { + number: n + }, + __type__: { + object: r + } + }, + repulsion: { + centralGravity: { + number: n + }, + springLength: { + number: n + }, + springConstant: { + number: n + }, + nodeDistance: { + number: n + }, + damping: { + number: n + }, + __type__: { + object: r + } + }, + hierarchicalRepulsion: { + centralGravity: { + number: n + }, + springLength: { + number: n + }, + springConstant: { + number: n + }, + nodeDistance: { + number: n + }, + damping: { + number: n + }, + __type__: { + object: r + } + }, + maxVelocity: { + number: n + }, + minVelocity: { + number: n + }, + solver: { + string: ["barnesHut", "repulsion", "hierarchicalRepulsion", "forceAtlas2Based"] + }, + stabilization: { + enabled: { + "boolean": o + }, + iterations: { + number: n + }, + updateInterval: { + number: n + }, + onlyDynamicEdges: { + "boolean": o + }, + fit: { + "boolean": o + }, + __type__: { + object: r, + "boolean": o + } + }, + timestep: { + number: n + }, + adaptiveTimestep: { + "boolean": o + }, + __type__: { + object: r, + "boolean": o + } + }, + autoResize: { + "boolean": o + }, + clickToUse: { + "boolean": o + }, + locale: { + string: i + }, + locales: { + __any__: { + any: h + }, + __type__: { + object: r + } + }, + height: { + string: i + }, + width: { + string: i + }, + __type__: { + object: r + } + }; + d.groups.__any__ = d.nodes, + d.manipulation.controlNodeStyle = d.nodes; + var l = { + nodes: { + borderWidth: [1, 0, 10, 1], + borderWidthSelected: [2, 0, 10, 1], + color: { + border: ["color", "#2B7CE9"], + background: ["color", "#97C2FC"], + highlight: { + border: ["color", "#2B7CE9"], + background: ["color", "#D2E5FF"] + }, + hover: { + border: ["color", "#2B7CE9"], + background: ["color", "#D2E5FF"] + } + }, + fixed: { + x: !1, + y: !1 + }, + font: { + color: ["color", "#343434"], + size: [14, 0, 100, 1], + face: ["arial", "verdana", "tahoma"], + background: ["color", "none"], + strokeWidth: [0, 0, 50, 1], + strokeColor: ["color", "#ffffff"] + }, + hidden: !1, + labelHighlightBold: !0, + physics: !0, + scaling: { + min: [10, 0, 200, 1], + max: [30, 0, 200, 1], + label: { + enabled: !1, + min: [14, 0, 200, 1], + max: [30, 0, 200, 1], + maxVisible: [30, 0, 200, 1], + drawThreshold: [5, 0, 20, 1] + } + }, + shadow: { + enabled: !1, + color: "rgba(0,0,0,0.5)", + size: [10, 0, 20, 1], + x: [5, -30, 30, 1], + y: [5, -30, 30, 1] + }, + shape: ["ellipse", "box", "circle", "database", "diamond", "dot", "square", "star", "text", "triangle", "triangleDown"], + shapeProperties: { + borderDashes: !1, + borderRadius: [6, 0, 20, 1], + interpolation: !0, + useImageSize: !1 + }, + size: [25, 0, 200, 1] + }, + edges: { + arrows: { + to: { + enabled: !1, + scaleFactor: [1, 0, 3, .05] + }, + middle: { + enabled: !1, + scaleFactor: [1, 0, 3, .05] + }, + from: { + enabled: !1, + scaleFactor: [1, 0, 3, .05] + } + }, + arrowStrikethrough: !0, + color: { + color: ["color", "#848484"], + highlight: ["color", "#848484"], + hover: ["color", "#848484"], + inherit: ["from", "to", "both", !0, !1], + opacity: [1, 0, 1, .05] + }, + dashes: !1, + font: { + color: ["color", "#343434"], + size: [14, 0, 100, 1], + face: ["arial", "verdana", "tahoma"], + background: ["color", "none"], + strokeWidth: [2, 0, 50, 1], + strokeColor: ["color", "#ffffff"], + align: ["horizontal", "top", "middle", "bottom"] + }, + hidden: !1, + hoverWidth: [1.5, 0, 5, .1], + labelHighlightBold: !0, + physics: !0, + scaling: { + min: [1, 0, 100, 1], + max: [15, 0, 100, 1], + label: { + enabled: !0, + min: [14, 0, 200, 1], + max: [30, 0, 200, 1], + maxVisible: [30, 0, 200, 1], + drawThreshold: [5, 0, 20, 1] + } + }, + selectionWidth: [1.5, 0, 5, .1], + selfReferenceSize: [20, 0, 200, 1], + shadow: { + enabled: !1, + color: "rgba(0,0,0,0.5)", + size: [10, 0, 20, 1], + x: [5, -30, 30, 1], + y: [5, -30, 30, 1] + }, + smooth: { + enabled: !0, + type: ["dynamic", "continuous", "discrete", "diagonalCross", "straightCross", "horizontal", "vertical", "curvedCW", "curvedCCW", "cubicBezier"], + forceDirection: ["horizontal", "vertical", "none"], + roundness: [.5, 0, 1, .05] + }, + width: [1, 0, 30, 1] + }, + layout: { + hierarchical: { + enabled: !1, + levelSeparation: [150, 20, 500, 5], + nodeSpacing: [100, 20, 500, 5], + treeSpacing: [200, 20, 500, 5], + blockShifting: !0, + edgeMinimization: !0, + parentCentralization: !0, + direction: ["UD", "DU", "LR", "RL"], + sortMethod: ["hubsize", "directed"] + } + }, + interaction: { + dragNodes: !0, + dragView: !0, + hideEdgesOnDrag: !1, + hideNodesOnDrag: !1, + hover: !1, + keyboard: { + enabled: !1, + speed: { + x: [10, 0, 40, 1], + y: [10, 0, 40, 1], + zoom: [.02, 0, .1, .005] + }, + bindToWindow: !0 + }, + multiselect: !1, + navigationButtons: !1, + selectable: !0, + selectConnectedEdges: !0, + hoverConnectedEdges: !0, + tooltipDelay: [300, 0, 1e3, 25], + zoomView: !0 + }, + manipulation: { + enabled: !1, + initiallyActive: !1 + }, + physics: { + enabled: !0, + barnesHut: { + gravitationalConstant: [-2e3, -3e4, 0, 50], + centralGravity: [.3, 0, 10, .05], + springLength: [95, 0, 500, 5], + springConstant: [.04, 0, 1.2, .005], + damping: [.09, 0, 1, .01], + avoidOverlap: [0, 0, 1, .01] + }, + forceAtlas2Based: { + gravitationalConstant: [-50, -500, 0, 1], + centralGravity: [.01, 0, 1, .005], + springLength: [95, 0, 500, 5], + springConstant: [.08, 0, 1.2, .005], + damping: [.4, 0, 1, .01], + avoidOverlap: [0, 0, 1, .01] + }, + repulsion: { + centralGravity: [.2, 0, 10, .05], + springLength: [200, 0, 500, 5], + springConstant: [.05, 0, 1.2, .005], + nodeDistance: [100, 0, 500, 5], + damping: [.09, 0, 1, .01] + }, + hierarchicalRepulsion: { + centralGravity: [.2, 0, 10, .05], + springLength: [100, 0, 500, 5], + springConstant: [.01, 0, 1.2, .005], + nodeDistance: [120, 0, 500, 5], + damping: [.09, 0, 1, .01] + }, + maxVelocity: [50, 0, 150, 1], + minVelocity: [.1, .01, .5, .01], + solver: ["barnesHut", "forceAtlas2Based", "repulsion", "hierarchicalRepulsion"], + timestep: [.5, .01, 1, .01] + }, + global: { + locale: ["en", "nl"] + } + }; + t.allOptions = d, + t.configureOptions = l + } + , function(e, t, i) { + function o(e) { + return e && e.__esModule ? e : { + "default": e + } + } + function n(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var s = function() { + function e(e, t) { + var i = [] + , o = !0 + , n = !1 + , s = void 0; + try { + for (var r, a = e[Symbol.iterator](); !(o = (r = a.next()).done) && (i.push(r.value), + !t || i.length !== t); o = !0) + ; + } catch (h) { + n = !0, + s = h + } finally { + try { + !o && a["return"] && a["return"]() + } finally { + if (n) + throw s + } + } + return i + } + return function(t, i) { + if (Array.isArray(t)) + return t; + if (Symbol.iterator in Object(t)) + return e(t, i); + throw new TypeError("Invalid attempt to destructure non-iterable instance") + } + }() + , r = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , a = i(74) + , h = o(a) + , d = function() { + function e(t, i, o) { + n(this, e), + this.body = t, + this.springLength = i, + this.springConstant = o, + this.distanceSolver = new h["default"] + } + return r(e, [{ + key: "setOptions", + value: function(e) { + e && (e.springLength && (this.springLength = e.springLength), + e.springConstant && (this.springConstant = e.springConstant)) + } + }, { + key: "solve", + value: function(e, t) { + var i = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2] + , o = this.distanceSolver.getDistances(this.body, e, t); + this._createL_matrix(o), + this._createK_matrix(o); + for (var n = .01, r = 1, a = 0, h = Math.max(1e3, Math.min(10 * this.body.nodeIndices.length, 6e3)), d = 5, l = 1e9, c = 0, u = 0, f = 0, p = 0, v = 0; l > n && h > a; ) { + a += 1; + var y = this._getHighestEnergyNode(i) + , g = s(y, 4); + for (c = g[0], + l = g[1], + u = g[2], + f = g[3], + p = l, + v = 0; p > r && d > v; ) { + v += 1, + this._moveNode(c, u, f); + var b = this._getEnergy(c) + , m = s(b, 3); + p = m[0], + u = m[1], + f = m[2] + } + } + } + }, { + key: "_getHighestEnergyNode", + value: function(e) { + for (var t = this.body.nodeIndices, i = this.body.nodes, o = 0, n = t[0], r = 0, a = 0, h = 0; h < t.length; h++) { + var d = t[h]; + if (i[d].predefinedPosition === !1 || i[d].isCluster === !0 && e === !0 || i[d].options.fixed.x === !0 || i[d].options.fixed.y === !0) { + var l = this._getEnergy(d) + , c = s(l, 3) + , u = c[0] + , f = c[1] + , p = c[2]; + u > o && (o = u, + n = d, + r = f, + a = p) + } + } + return [n, o, r, a] + } + }, { + key: "_getEnergy", + value: function(e) { + for (var t = this.body.nodeIndices, i = this.body.nodes, o = i[e].x, n = i[e].y, s = 0, r = 0, a = 0; a < t.length; a++) { + var h = t[a]; + if (h !== e) { + var d = i[h].x + , l = i[h].y + , c = 1 / Math.sqrt(Math.pow(o - d, 2) + Math.pow(n - l, 2)); + s += this.K_matrix[e][h] * (o - d - this.L_matrix[e][h] * (o - d) * c), + r += this.K_matrix[e][h] * (n - l - this.L_matrix[e][h] * (n - l) * c) + } + } + var u = Math.sqrt(Math.pow(s, 2) + Math.pow(r, 2)); + return [u, s, r] + } + }, { + key: "_moveNode", + value: function(e, t, i) { + for (var o = this.body.nodeIndices, n = this.body.nodes, s = 0, r = 0, a = 0, h = n[e].x, d = n[e].y, l = 0; l < o.length; l++) { + var c = o[l]; + if (c !== e) { + var u = n[c].x + , f = n[c].y + , p = 1 / Math.pow(Math.pow(h - u, 2) + Math.pow(d - f, 2), 1.5); + s += this.K_matrix[e][c] * (1 - this.L_matrix[e][c] * Math.pow(d - f, 2) * p), + r += this.K_matrix[e][c] * (this.L_matrix[e][c] * (h - u) * (d - f) * p), + a += this.K_matrix[e][c] * (1 - this.L_matrix[e][c] * Math.pow(h - u, 2) * p) + } + } + var v = s + , y = r + , g = t + , b = a + , m = i + , _ = (g / v + m / y) / (y / v - b / y) + , w = -(y * _ + g) / v; + n[e].x += w, + n[e].y += _ + } + }, { + key: "_createL_matrix", + value: function(e) { + var t = this.body.nodeIndices + , i = this.springLength; + this.L_matrix = []; + for (var o = 0; o < t.length; o++) { + this.L_matrix[t[o]] = {}; + for (var n = 0; n < t.length; n++) + this.L_matrix[t[o]][t[n]] = i * e[t[o]][t[n]] + } + } + }, { + key: "_createK_matrix", + value: function(e) { + var t = this.body.nodeIndices + , i = this.springConstant; + this.K_matrix = []; + for (var o = 0; o < t.length; o++) { + this.K_matrix[t[o]] = {}; + for (var n = 0; n < t.length; n++) + this.K_matrix[t[o]][t[n]] = i * Math.pow(e[t[o]][t[n]], -2) + } + } + }]), + e + }(); + t["default"] = d + } + , function(e, t) { + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function") + } + Object.defineProperty(t, "__esModule", { + value: !0 + }); + var o = function() { + function e(e, t) { + for (var i = 0; i < t.length; i++) { + var o = t[i]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(e, o.key, o) + } + } + return function(t, i, o) { + return i && e(t.prototype, i), + o && e(t, o), + t + } + }() + , n = function() { + function e() { + i(this, e) + } + return o(e, [{ + key: "getDistances", + value: function(e, t, i) { + for (var o = {}, n = e.edges, s = 0; s < t.length; s++) { + o[t[s]] = {}, + o[t[s]] = {}; + for (var r = 0; r < t.length; r++) + o[t[s]][t[r]] = s == r ? 0 : 1e9, + o[t[s]][t[r]] = s == r ? 0 : 1e9 + } + for (var a = 0; a < i.length; a++) { + var h = n[i[a]]; + h.connected === !0 && void 0 !== o[h.fromId] && void 0 !== o[h.toId] && (o[h.fromId][h.toId] = 1, + o[h.toId][h.fromId] = 1) + } + for (var d = t.length, l = 0; d > l; l++) + for (var c = 0; d - 1 > c; c++) + for (var u = c + 1; d > u; u++) + o[t[c]][t[u]] = Math.min(o[t[c]][t[u]], o[t[c]][t[l]] + o[t[l]][t[u]]), + o[t[u]][t[c]] = o[t[c]][t[u]]; + return o + } + }]), + e + }(); + t["default"] = n + } + , function(e, t) { + "undefined" != typeof CanvasRenderingContext2D && (CanvasRenderingContext2D.prototype.circle = function(e, t, i) { + this.beginPath(), + this.arc(e, t, i, 0, 2 * Math.PI, !1), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.square = function(e, t, i) { + this.beginPath(), + this.rect(e - i, t - i, 2 * i, 2 * i), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.triangle = function(e, t, i) { + this.beginPath(), + i *= 1.15, + t += .275 * i; + var o = 2 * i + , n = o / 2 + , s = Math.sqrt(3) / 6 * o + , r = Math.sqrt(o * o - n * n); + this.moveTo(e, t - (r - s)), + this.lineTo(e + n, t + s), + this.lineTo(e - n, t + s), + this.lineTo(e, t - (r - s)), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.triangleDown = function(e, t, i) { + this.beginPath(), + i *= 1.15, + t -= .275 * i; + var o = 2 * i + , n = o / 2 + , s = Math.sqrt(3) / 6 * o + , r = Math.sqrt(o * o - n * n); + this.moveTo(e, t + (r - s)), + this.lineTo(e + n, t - s), + this.lineTo(e - n, t - s), + this.lineTo(e, t + (r - s)), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.star = function(e, t, i) { + this.beginPath(), + i *= .82, + t += .1 * i; + for (var o = 0; 10 > o; o++) { + var n = o % 2 === 0 ? 1.3 * i : .5 * i; + this.lineTo(e + n * Math.sin(2 * o * Math.PI / 10), t - n * Math.cos(2 * o * Math.PI / 10)) + } + this.closePath() + } + , + CanvasRenderingContext2D.prototype.diamond = function(e, t, i) { + this.beginPath(), + this.lineTo(e, t + i), + this.lineTo(e + i, t), + this.lineTo(e, t - i), + this.lineTo(e - i, t), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.roundRect = function(e, t, i, o, n) { + var s = Math.PI / 180; + 0 > i - 2 * n && (n = i / 2), + 0 > o - 2 * n && (n = o / 2), + this.beginPath(), + this.moveTo(e + n, t), + this.lineTo(e + i - n, t), + this.arc(e + i - n, t + n, n, 270 * s, 360 * s, !1), + this.lineTo(e + i, t + o - n), + this.arc(e + i - n, t + o - n, n, 0, 90 * s, !1), + this.lineTo(e + n, t + o), + this.arc(e + n, t + o - n, n, 90 * s, 180 * s, !1), + this.lineTo(e, t + n), + this.arc(e + n, t + n, n, 180 * s, 270 * s, !1), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.ellipse = function(e, t, i, o) { + var n = .5522848 + , s = i / 2 * n + , r = o / 2 * n + , a = e + i + , h = t + o + , d = e + i / 2 + , l = t + o / 2; + this.beginPath(), + this.moveTo(e, l), + this.bezierCurveTo(e, l - r, d - s, t, d, t), + this.bezierCurveTo(d + s, t, a, l - r, a, l), + this.bezierCurveTo(a, l + r, d + s, h, d, h), + this.bezierCurveTo(d - s, h, e, l + r, e, l), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.database = function(e, t, i, o) { + var n = 1 / 3 + , s = i + , r = o * n + , a = .5522848 + , h = s / 2 * a + , d = r / 2 * a + , l = e + s + , c = t + r + , u = e + s / 2 + , f = t + r / 2 + , p = t + (o - r / 2) + , v = t + o; + this.beginPath(), + this.moveTo(l, f), + this.bezierCurveTo(l, f + d, u + h, c, u, c), + this.bezierCurveTo(u - h, c, e, f + d, e, f), + this.bezierCurveTo(e, f - d, u - h, t, u, t), + this.bezierCurveTo(u + h, t, l, f - d, l, f), + this.lineTo(l, p), + this.bezierCurveTo(l, p + d, u + h, v, u, v), + this.bezierCurveTo(u - h, v, e, p + d, e, p), + this.lineTo(e, f) + } + , + CanvasRenderingContext2D.prototype.arrow = function(e, t, i, o) { + var n = e - o * Math.cos(i) + , s = t - o * Math.sin(i) + , r = e - .9 * o * Math.cos(i) + , a = t - .9 * o * Math.sin(i) + , h = n + o / 3 * Math.cos(i + .5 * Math.PI) + , d = s + o / 3 * Math.sin(i + .5 * Math.PI) + , l = n + o / 3 * Math.cos(i - .5 * Math.PI) + , c = s + o / 3 * Math.sin(i - .5 * Math.PI); + this.beginPath(), + this.moveTo(e, t), + this.lineTo(h, d), + this.lineTo(r, a), + this.lineTo(l, c), + this.closePath() + } + , + CanvasRenderingContext2D.prototype.dashedLine = function(e, t, i, o, n) { + this.beginPath(), + this.moveTo(e, t); + for (var s = n.length, r = i - e, a = o - t, h = a / r, d = Math.sqrt(r * r + a * a), l = 0, c = !0, u = 0, f = n[0]; d >= .1; ) + f = n[l++ % s], + f > d && (f = d), + u = Math.sqrt(f * f / (1 + h * h)), + u = 0 > r ? -u : u, + e += u, + t += h * u, + c === !0 ? this.lineTo(e, t) : this.moveTo(e, t), + d -= f, + c = !c + } + ) + } + , function(e, t) { + function i(e) { + return e ? o(e) : void 0 + } + function o(e) { + for (var t in i.prototype) + e[t] = i.prototype[t]; + return e + } + e.exports = i, + i.prototype.on = i.prototype.addEventListener = function(e, t) { + return this._callbacks = this._callbacks || {}, + (this._callbacks[e] = this._callbacks[e] || []).push(t), + this + } + , + i.prototype.once = function(e, t) { + function i() { + o.off(e, i), + t.apply(this, arguments) + } + var o = this; + return this._callbacks = this._callbacks || {}, + i.fn = t, + this.on(e, i), + this + } + , + i.prototype.off = i.prototype.removeListener = i.prototype.removeAllListeners = i.prototype.removeEventListener = function(e, t) { + if (this._callbacks = this._callbacks || {}, + 0 == arguments.length) + return this._callbacks = {}, + this; + var i = this._callbacks[e]; + if (!i) + return this; + if (1 == arguments.length) + return delete this._callbacks[e], + this; + for (var o, n = 0; n < i.length; n++) + if (o = i[n], + o === t || o.fn === t) { + i.splice(n, 1); + break + } + return this + } + , + i.prototype.emit = function(e) { + this._callbacks = this._callbacks || {}; + var t = [].slice.call(arguments, 1) + , i = this._callbacks[e]; + if (i) { + i = i.slice(0); + for (var o = 0, n = i.length; n > o; ++o) + i[o].apply(this, t) + } + return this + } + , + i.prototype.listeners = function(e) { + return this._callbacks = this._callbacks || {}, + this._callbacks[e] || [] + } + , + i.prototype.hasListeners = function(e) { + return !!this.listeners(e).length + } + } + , function(e, t) { + function i(e) { + return P = e, + f() + } + function o() { + B = 0, + F = P.charAt(0) + } + function n() { + B++, + F = P.charAt(B) + } + function s() { + return P.charAt(B + 1) + } + function r(e) { + return N.test(e) + } + function a(e, t) { + if (e || (e = {}), + t) + for (var i in t) + t.hasOwnProperty(i) && (e[i] = t[i]); + return e + } + function h(e, t, i) { + for (var o = t.split("."), n = e; o.length; ) { + var s = o.shift(); + o.length ? (n[s] || (n[s] = {}), + n = n[s]) : n[s] = i + } + } + function d(e, t) { + for (var i, o, n = null, s = [e], r = e; r.parent; ) + s.push(r.parent), + r = r.parent; + if (r.nodes) + for (i = 0, + o = r.nodes.length; o > i; i++) + if (t.id === r.nodes[i].id) { + n = r.nodes[i]; + break + } + for (n || (n = { + id: t.id + }, + e.node && (n.attr = a(n.attr, e.node))), + i = s.length - 1; i >= 0; i--) { + var h = s[i]; + h.nodes || (h.nodes = []), + -1 === h.nodes.indexOf(n) && h.nodes.push(n) + } + t.attr && (n.attr = a(n.attr, t.attr)) + } + function l(e, t) { + if (e.edges || (e.edges = []), + e.edges.push(t), + e.edge) { + var i = a({}, e.edge); + t.attr = a(i, t.attr) + } + } + function c(e, t, i, o, n) { + var s = { + from: t, + to: i, + type: o + }; + return e.edge && (s.attr = a({}, e.edge)), + s.attr = a(s.attr || {}, n), + s + } + function u() { + for (j = C.NULL, + I = ""; " " === F || " " === F || "\n" === F || "\r" === F; ) + n(); + do { + var e = !1; + if ("#" === F) { + for (var t = B - 1; " " === P.charAt(t) || " " === P.charAt(t); ) + t--; + if ("\n" === P.charAt(t) || "" === P.charAt(t)) { + for (; "" != F && "\n" != F; ) + n(); + e = !0 + } + } + if ("/" === F && "/" === s()) { + for (; "" != F && "\n" != F; ) + n(); + e = !0 + } + if ("/" === F && "*" === s()) { + for (; "" != F; ) { + if ("*" === F && "/" === s()) { + n(), + n(); + break + } + n() + } + e = !0 + } + for (; " " === F || " " === F || "\n" === F || "\r" === F; ) + n() + } while (e); + if ("" === F) + return void (j = C.DELIMITER); + var i = F + s(); + if (T[i]) + return j = C.DELIMITER, + I = i, + n(), + void n(); + if (T[F]) + return j = C.DELIMITER, + I = F, + void n(); + if (r(F) || "-" === F) { + for (I += F, + n(); r(F); ) + I += F, + n(); + return "false" === I ? I = !1 : "true" === I ? I = !0 : isNaN(Number(I)) || (I = Number(I)), + void (j = C.IDENTIFIER) + } + if ('"' === F) { + for (n(); "" != F && ('"' != F || '"' === F && '"' === s()); ) + I += F, + '"' === F && n(), + n(); + if ('"' != F) + throw w('End of string " expected'); + return n(), + void (j = C.IDENTIFIER) + } + for (j = C.UNKNOWN; "" != F; ) + I += F, + n(); + throw new SyntaxError('Syntax error in part "' + k(I, 30) + '"') + } + function f() { + var e = {}; + if (o(), + u(), + "strict" === I && (e.strict = !0, + u()), + "graph" !== I && "digraph" !== I || (e.type = I, + u()), + j === C.IDENTIFIER && (e.id = I, + u()), + "{" != I) + throw w("Angle bracket { expected"); + if (u(), + p(e), + "}" != I) + throw w("Angle bracket } expected"); + if (u(), + "" !== I) + throw w("End of file expected"); + return u(), + delete e.node, + delete e.edge, + delete e.graph, + e + } + function p(e) { + for (; "" !== I && "}" != I; ) + v(e), + ";" === I && u() + } + function v(e) { + var t = y(e); + if (t) + return void m(e, t); + var i = g(e); + if (!i) { + if (j != C.IDENTIFIER) + throw w("Identifier expected"); + var o = I; + if (u(), + "=" === I) { + if (u(), + j != C.IDENTIFIER) + throw w("Identifier expected"); + e[o] = I, + u() + } else + b(e, o) + } + } + function y(e) { + var t = null; + if ("subgraph" === I && (t = {}, + t.type = "subgraph", + u(), + j === C.IDENTIFIER && (t.id = I, + u())), + "{" === I) { + if (u(), + t || (t = {}), + t.parent = e, + t.node = e.node, + t.edge = e.edge, + t.graph = e.graph, + p(t), + "}" != I) + throw w("Angle bracket } expected"); + u(), + delete t.node, + delete t.edge, + delete t.graph, + delete t.parent, + e.subgraphs || (e.subgraphs = []), + e.subgraphs.push(t) + } + return t + } + function g(e) { + return "node" === I ? (u(), + e.node = _(), + "node") : "edge" === I ? (u(), + e.edge = _(), + "edge") : "graph" === I ? (u(), + e.graph = _(), + "graph") : null + } + function b(e, t) { + var i = { + id: t + } + , o = _(); + o && (i.attr = o), + d(e, i), + m(e, t) + } + function m(e, t) { + for (; "->" === I || "--" === I; ) { + var i, o = I; + u(); + var n = y(e); + if (n) + i = n; + else { + if (j != C.IDENTIFIER) + throw w("Identifier or subgraph expected"); + i = I, + d(e, { + id: i + }), + u() + } + var s = _() + , r = c(e, t, i, o, s); + l(e, r), + t = i + } + } + function _() { + for (var e = null; "[" === I; ) { + for (u(), + e = {}; "" !== I && "]" != I; ) { + if (j != C.IDENTIFIER) + throw w("Attribute name expected"); + var t = I; + if (u(), + "=" != I) + throw w("Equal sign = expected"); + if (u(), + j != C.IDENTIFIER) + throw w("Attribute value expected"); + var i = I; + h(e, t, i), + u(), + "," == I && u() + } + if ("]" != I) + throw w("Bracket ] expected"); + u() + } + return e + } + function w(e) { + return new SyntaxError(e + ', got "' + k(I, 30) + '" (char ' + B + ")") + } + function k(e, t) { + return e.length <= t ? e : e.substr(0, 27) + "..." + } + function x(e, t, i) { + Array.isArray(e) ? e.forEach(function(e) { + Array.isArray(t) ? t.forEach(function(t) { + i(e, t) + }) : i(e, t) + }) : Array.isArray(t) ? t.forEach(function(t) { + i(e, t) + }) : i(e, t) + } + function O(e, t, i) { + for (var o = t.split("."), n = o.pop(), s = e, r = 0; r < o.length; r++) { + var a = o[r]; + a in s || (s[a] = {}), + s = s[a] + } + return s[n] = i, + e + } + function E(e, t) { + var i = {}; + for (var o in e) + if (e.hasOwnProperty(o)) { + var n = t[o]; + Array.isArray(n) ? n.forEach(function(t) { + O(i, t, e[o]) + }) : "string" == typeof n ? O(i, n, e[o]) : O(i, o, e[o]) + } + return i + } + function M(e) { + var t = i(e) + , o = { + nodes: [], + edges: [], + options: {} + }; + if (t.nodes && t.nodes.forEach(function(e) { + var t = { + id: e.id, + label: String(e.label || e.id) + }; + a(t, E(e.attr, D)), + t.image && (t.shape = "image"), + o.nodes.push(t) + }), + t.edges) { + var n = function(e) { + var t = { + from: e.from, + to: e.to + }; + return a(t, E(e.attr, S)), + t.arrows = "->" === e.type ? "to" : void 0, + t + }; + t.edges.forEach(function(e) { + var t, i; + t = e.from instanceof Object ? e.from.nodes : { + id: e.from + }, + i = e.to instanceof Object ? e.to.nodes : { + id: e.to + }, + e.from instanceof Object && e.from.edges && e.from.edges.forEach(function(e) { + var t = n(e); + o.edges.push(t) + }), + x(t, i, function(t, i) { + var s = c(o, t.id, i.id, e.type, e.attr) + , r = n(s); + o.edges.push(r) + }), + e.to instanceof Object && e.to.edges && e.to.edges.forEach(function(e) { + var t = n(e); + o.edges.push(t) + }) + }) + } + return t.attr && (o.options = t.attr), + o + } + var D = { + fontsize: "font.size", + fontcolor: "font.color", + labelfontcolor: "font.color", + fontname: "font.face", + color: ["color.border", "color.background"], + fillcolor: "color.background", + tooltip: "title", + labeltooltip: "title" + } + , S = Object.create(D); + S.color = "color.color"; + var C = { + NULL: 0, + DELIMITER: 1, + IDENTIFIER: 2, + UNKNOWN: 3 + } + , T = { + "{": !0, + "}": !0, + "[": !0, + "]": !0, + ";": !0, + "=": !0, + ",": !0, + "->": !0, + "--": !0 + } + , P = "" + , B = 0 + , F = "" + , I = "" + , j = C.NULL + , N = /[a-zA-Z_0-9.:#]/; + t.parseDOT = i, + t.DOTToGraph = M + } + , function(e, t) { + function i(e, t) { + var i = [] + , o = [] + , n = { + edges: { + inheritColor: !1 + }, + nodes: { + fixed: !1, + parseColor: !1 + } + }; + void 0 !== t && (void 0 !== t.fixed && (n.nodes.fixed = t.fixed), + void 0 !== t.parseColor && (n.nodes.parseColor = t.parseColor), + void 0 !== t.inheritColor && (n.edges.inheritColor = t.inheritColor)); + for (var s = e.edges, r = e.nodes, a = 0; a < s.length; a++) { + var h = {} + , d = s[a]; + h.id = d.id, + h.from = d.source, + h.to = d.target, + h.attributes = d.attributes, + h.label = d.label, + h.title = void 0 !== d.attributes ? d.attributes.title : void 0, + "Directed" === d.type && (h.arrows = "to"), + d.color && n.inheritColor === !1 && (h.color = d.color), + i.push(h) + } + for (var a = 0; a < r.length; a++) { + var l = {} + , c = r[a]; + l.id = c.id, + l.attributes = c.attributes, + l.title = c.title, + l.x = c.x, + l.y = c.y, + l.label = c.label, + l.title = void 0 !== c.attributes ? c.attributes.title : void 0, + n.nodes.parseColor === !0 ? l.color = c.color : l.color = void 0 !== c.color ? { + background: c.color, + border: c.color, + highlight: { + background: c.color, + border: c.color + }, + hover: { + background: c.color, + border: c.color + } + } : void 0, + l.size = c.size, + l.fixed = n.nodes.fixed && void 0 !== c.x && void 0 !== c.y, + o.push(l) + } + return { + nodes: o, + edges: i + } + } + t.parseGephi = i + } + , function(e, t, i) { + function o(e) { + this.active = !1, + this.dom = { + container: e + }, + this.dom.overlay = document.createElement("div"), + this.dom.overlay.className = "vis-overlay", + this.dom.container.appendChild(this.dom.overlay), + this.hammer = a(this.dom.overlay), + this.hammer.on("tap", this._onTapOverlay.bind(this)); + var t = this + , i = ["tap", "doubletap", "press", "pinch", "pan", "panstart", "panmove", "panend"]; + i.forEach(function(e) { + t.hammer.on(e, function(e) { + e.stopPropagation() + }) + }), + document && document.body && (this.onClick = function(i) { + n(i.target, e) || t.deactivate() + } + , + document.body.addEventListener("click", this.onClick)), + void 0 !== this.keycharm && this.keycharm.destroy(), + this.keycharm = s(), + this.escListener = this.deactivate.bind(this) + } + function n(e, t) { + for (; e; ) { + if (e === t) + return !0; + e = e.parentNode + } + return !1 + } + var s = i(65) + , r = i(76) + , a = i(58) + , h = i(1); + r(o.prototype), + o.current = null, + o.prototype.destroy = function() { + this.deactivate(), + this.dom.overlay.parentNode.removeChild(this.dom.overlay), + this.onClick && document.body.removeEventListener("click", this.onClick), + this.hammer.destroy(), + this.hammer = null + } + , + o.prototype.activate = function() { + o.current && o.current.deactivate(), + o.current = this, + this.active = !0, + this.dom.overlay.style.display = "none", + h.addClassName(this.dom.container, "vis-active"), + this.emit("change"), + this.emit("activate"), + this.keycharm.bind("esc", this.escListener) + } + , + o.prototype.deactivate = function() { + this.active = !1, + this.dom.overlay.style.display = "", + h.removeClassName(this.dom.container, "vis-active"), + this.keycharm.unbind("esc", this.escListener), + this.emit("change"), + this.emit("deactivate") + } + , + o.prototype._onTapOverlay = function(e) { + this.activate(), + e.stopPropagation() + } + , + e.exports = o + } + , function(e, t) { + t.en = { + edit: "Edit", + del: "Delete selected", + back: "Back", + addNode: "Add Node", + addEdge: "Add Edge", + editNode: "Edit Node", + editEdge: "Edit Edge", + addDescription: "Click in an empty space to place a new node.", + edgeDescription: "Click on a node and drag the edge to another node to connect them.", + editEdgeDescription: "Click on the control points and drag them to a node to connect to it.", + createEdgeError: "Cannot link edges to a cluster.", + deleteClusterError: "Clusters cannot be deleted.", + editClusterError: "Clusters cannot be edited." + }, + t.en_EN = t.en, + t.en_US = t.en, + t.de = { + edit: "Editieren", + del: "Lösche Auswahl", + back: "Zurück", + addNode: "Knoten hinzufügen", + addEdge: "Kante hinzufügen", + editNode: "Knoten editieren", + editEdge: "Kante editieren", + addDescription: "Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.", + edgeDescription: "Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.", + editEdgeDescription: "Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.", + createEdgeError: "Es ist nicht möglich, Kanten mit Clustern zu verbinden.", + deleteClusterError: "Cluster können nicht gelöscht werden.", + editClusterError: "Cluster können nicht editiert werden." + }, + t.de_DE = t.de, + t.es = { + edit: "Editar", + del: "Eliminar selección", + back: "Átras", + addNode: "Añadir nodo", + addEdge: "Añadir arista", + editNode: "Editar nodo", + editEdge: "Editar arista", + addDescription: "Haga clic en un lugar vacío para colocar un nuevo nodo.", + edgeDescription: "Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.", + editEdgeDescription: "Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.", + createEdgeError: "No se puede conectar una arista a un grupo.", + deleteClusterError: "No es posible eliminar grupos.", + editClusterError: "No es posible editar grupos." + }, + t.es_ES = t.es, + t.nl = { + edit: "Wijzigen", + del: "Selectie verwijderen", + back: "Terug", + addNode: "Node toevoegen", + addEdge: "Link toevoegen", + editNode: "Node wijzigen", + editEdge: "Link wijzigen", + addDescription: "Klik op een leeg gebied om een nieuwe node te maken.", + edgeDescription: "Klik op een node en sleep de link naar een andere node om ze te verbinden.", + editEdgeDescription: "Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.", + createEdgeError: "Kan geen link maken naar een cluster.", + deleteClusterError: "Clusters kunnen niet worden verwijderd.", + editClusterError: "Clusters kunnen niet worden aangepast." + }, + t.nl_NL = t.nl, + t.nl_BE = t.nl + } + ]) +});