diff --git a/dist/vis.css b/dist/vis.css index 2bbe58fb..8b8574c9 100644 --- a/dist/vis.css +++ b/dist/vis.css @@ -90,7 +90,6 @@ .vis.timeline .labelset { position: relative; - width: 100%; overflow: hidden; diff --git a/dist/vis.js b/dist/vis.js index 9121669f..d0dc0004 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -15045,7 +15045,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(52); var Hammer = __webpack_require__(44); - var mousetrap = __webpack_require__(55); + var mousetrap = __webpack_require__(53); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(46); var DataSet = __webpack_require__(3); @@ -20991,7 +20991,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(53); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(54); /***/ }, @@ -21001,7 +21001,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(54); + module.exports = window['Hammer'] || __webpack_require__(55); } else { module.exports = function () { @@ -22381,7 +22381,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 51 */ /***/ function(module, exports, __webpack_require__) { - var mousetrap = __webpack_require__(55); + var mousetrap = __webpack_require__(53); var Emitter = __webpack_require__(52); var Hammer = __webpack_require__(44); var util = __webpack_require__(1); @@ -22703,5836 +22703,5836 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.8.3 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com - - (function (undefined) { - /************************************ - Constants - ************************************/ + /** + * Copyright 2012 Craig Campbell + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Mousetrap is a simple keyboard shortcut library for Javascript with + * no external dependencies + * + * @version 1.1.2 + * @url craig.is/killing/mice + */ - var moment, - VERSION = '2.8.3', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * mapping of special keycodes to their corresponding keys + * + * everything in this dictionary cannot use keypress events + * so it has to be here to map to the correct keycodes for + * keyup/keydown events + * + * @type {Object} + */ + var _MAP = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'ctrl', + 18: 'alt', + 20: 'capslock', + 27: 'esc', + 32: 'space', + 33: 'pageup', + 34: 'pagedown', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 45: 'ins', + 46: 'del', + 91: 'meta', + 93: 'meta', + 224: 'meta' + }, - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * mapping for special characters so they can support + * + * this dictionary is only used incase you want to bind a + * keyup or keydown event to one of these keys + * + * @type {Object} + */ + _KEYCODE_MAP = { + 106: '*', + 107: '+', + 109: '-', + 110: '.', + 111 : '/', + 186: ';', + 187: '=', + 188: ',', + 189: '-', + 190: '.', + 191: '/', + 192: '`', + 219: '[', + 220: '\\', + 221: ']', + 222: '\'' + }, - // internal storage for locale config files - locales = {}, + /** + * this is a mapping of keys that require shift on a US keypad + * back to the non shift equivelents + * + * this is so you can use keyup events with these keys + * + * note that this will only work reliably on US keyboards + * + * @type {Object} + */ + _SHIFT_MAP = { + '~': '`', + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0', + '_': '-', + '+': '=', + ':': ';', + '\"': '\'', + '<': ',', + '>': '.', + '?': '/', + '|': '\\' + }, - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * this is a list of special strings you can use to map + * to modifier keys when you specify your keyboard shortcuts + * + * @type {Object} + */ + _SPECIAL_ALIASES = { + 'option': 'alt', + 'command': 'meta', + 'return': 'enter', + 'escape': 'esc' + }, - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + /** + * variable to store the flipped version of _MAP from above + * needed to check if we should use keypress or not when no action + * is specified + * + * @type {Object|undefined} + */ + _REVERSE_MAP, - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * a list of all the callbacks setup via Mousetrap.bind() + * + * @type {Object} + */ + _callbacks = {}, - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + /** + * direct map of string combinations to callbacks used for trigger() + * + * @type {Object} + */ + _direct_map = {}, - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + /** + * keeps track of what level each sequence is at since multiple + * sequences can start out with the same sequence + * + * @type {Object} + */ + _sequence_levels = {}, - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - parseTokenOrdinal = /\d{1,2}/, + /** + * variable to store the setTimeout call + * + * @type {null|number} + */ + _reset_timer, - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + /** + * temporary state where we will ignore the next keyup + * + * @type {boolean|string} + */ + _ignore_next_keyup = false, - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * are we currently inside of a sequence? + * type of action ("keyup" or "keydown" or "keypress") or false + * + * @type {boolean|string} + */ + _inside_sequence = false; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * loop through the f keys, f1 to f19 and add them to the map + * programatically + */ + for (var i = 1; i < 20; ++i) { + _MAP[111 + i] = 'f' + i; + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + /** + * loop through to map numbers on the numeric keypad + */ + for (i = 0; i <= 9; ++i) { + _MAP[i + 96] = i; + } - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, - - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, - - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, - - // format function strings - formatFunctions = {}, - - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } - - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } - - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - /************************************ - Constructors - ************************************/ - - function Locale() { - } - - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - } - - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); - } - - /************************************ - Helpers - ************************************/ - - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * cross browser add event method + * + * @param {Element|HTMLDocument} object + * @param {string} type + * @param {Function} callback + * @returns void + */ + function _addEvent(object, type, callback) { + if (object.addEventListener) { + return object.addEventListener(type, callback, false); + } - return res; - } + object.attachEvent('on' + type, callback); + } - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } + /** + * takes the event and returns the key character + * + * @param {Event} e + * @return {string} + */ + function _characterFromEvent(e) { - return res; - } + // for keypress events we should return the character as is + if (e.type == 'keypress') { + return String.fromCharCode(e.which); + } - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + // for non keypress events the special maps are needed + if (_MAP[e.which]) { + return _MAP[e.which]; + } - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } + if (_KEYCODE_MAP[e.which]) { + return _KEYCODE_MAP[e.which]; + } - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + // if it is not in the special map + return String.fromCharCode(e.which).toLowerCase(); + } - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } + /** + * should we stop this event before firing off callbacks + * + * @param {Event} e + * @return {boolean} + */ + function _stop(e) { + var element = e.target || e.srcElement, + tag_name = element.tagName; - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + // if the element has the class "mousetrap" then no need to stop + if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { + return false; + } - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + // stop for input, select, and textarea + return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); + } - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + /** + * checks if two arrays are equal + * + * @param {Array} modifiers1 + * @param {Array} modifiers2 + * @returns {boolean} + */ + function _modifiersMatch(modifiers1, modifiers2) { + return modifiers1.sort().join(',') === modifiers2.sort().join(','); + } - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + /** + * resets all sequence counters except for the ones passed in + * + * @param {Object} do_not_reset + * @returns void + */ + function _resetSequences(do_not_reset) { + do_not_reset = do_not_reset || {}; - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + var active_sequences = false, + key; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + for (key in _sequence_levels) { + if (do_not_reset[key]) { + active_sequences = true; + continue; + } + _sequence_levels[key] = 0; + } - return normalizedInput; - } + if (!active_sequences) { + _inside_sequence = false; + } + } - function makeList(field) { - var count, setter; + /** + * finds all callbacks that match based on the keycode, modifiers, + * and action + * + * @param {string} character + * @param {Array} modifiers + * @param {string} action + * @param {boolean=} remove - should we remove any matches + * @param {string=} combination + * @returns {Array} + */ + function _getMatches(character, modifiers, action, remove, combination) { + var i, + callback, + matches = []; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + // if there are no events related to this keycode + if (!_callbacks[character]) { + return []; + } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + // if a modifier key is coming up on its own we should allow it + if (action == 'keyup' && _isModifier(character)) { + modifiers = [character]; + } - if (typeof format === 'number') { - index = format; - format = undefined; - } + // loop through all callbacks for the key that was pressed + // and see if any of them match + for (i = 0; i < _callbacks[character].length; ++i) { + callback = _callbacks[character][i]; - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + // if this is a sequence but it is not at the right level + // then move onto the next match + if (callback.seq && _sequence_levels[callback.seq] != callback.level) { + continue; + } - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + // if the action we are looking for doesn't match the action we got + // then we should keep going + if (action != callback.action) { + continue; + } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + // if this is a keypress event that means that we need to only + // look at the character, otherwise check the modifiers as + // well + if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } + // remove is used so if you change your mind and call bind a + // second time with a new function the first one is overwritten + if (remove && callback.combo == combination) { + _callbacks[character].splice(i, 1); + } - return value; - } + matches.push(callback); + } + } - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + return matches; + } - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * takes a key event and figures out what the modifiers are + * + * @param {Event} e + * @returns {Array} + */ + function _eventModifiers(e) { + var modifiers = []; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + if (e.shiftKey) { + modifiers.push('shift'); + } - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + if (e.altKey) { + modifiers.push('alt'); + } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + if (e.ctrlKey) { + modifiers.push('ctrl'); + } - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + if (e.metaKey) { + modifiers.push('meta'); + } - m._pf.overflow = overflow; - } - } + return modifiers; + } - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + /** + * actually calls the callback function + * + * if your callback function returns false this will use the jquery + * convention - prevent default and stop propogation on the event + * + * @param {Function} callback + * @param {Event} e + * @returns void + */ + function _fireCallback(callback, e) { + if (callback(e) === false) { + if (e.preventDefault) { + e.preventDefault(); + } - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } + if (e.stopPropagation) { + e.stopPropagation(); + } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + e.returnValue = false; + e.cancelBubble = true; + } + } - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + /** + * handles a character key event + * + * @param {string} character + * @param {Event} e + * @returns void + */ + function _handleCharacter(character, e) { - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + // if this event should not happen stop here + if (_stop(e)) { + return; + } - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + var callbacks = _getMatches(character, _eventModifiers(e), e.type), + i, + do_not_reset = {}, + processed_sequence_callback = false; - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); - } + // loop through matching callbacks for this key event + for (i = 0; i < callbacks.length; ++i) { - /************************************ - Locale - ************************************/ + // fire for all sequence callbacks + // this is because if for example you have multiple sequences + // bound such as "g i" and "g t" they both need to fire the + // callback for matching g cause otherwise you can only ever + // match the first one + if (callbacks[i].seq) { + processed_sequence_callback = true; + // keep a list of which sequences were matches for later + do_not_reset[callbacks[i].seq] = 1; + _fireCallback(callbacks[i].callback, e); + continue; + } - extend(Locale.prototype, { + // if there were no sequence matches but we are still here + // that means this is a regular match so we should fire that + if (!processed_sequence_callback && !_inside_sequence) { + _fireCallback(callbacks[i].callback, e); + } + } - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, + // if you are inside of a sequence and the key you are pressing + // is not a modifier key then we should reset all sequences + // that were not matched by this key event + if (e.type == _inside_sequence && !_isModifier(character)) { + _resetSequences(do_not_reset); + } + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + /** + * handles a keydown event + * + * @param {Event} e + * @returns void + */ + function _handleKey(e) { - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + // normalize e.which for key events + // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion + e.which = typeof e.which == "number" ? e.which : e.keyCode; - monthsParse : function (monthName) { - var i, mom, regex; + var character = _characterFromEvent(e); - if (!this._monthsParse) { - this._monthsParse = []; - } + // no character found then stop + if (!character) { + return; + } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment.utc([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; - } - } - }, + if (e.type == 'keyup' && _ignore_next_keyup == character) { + _ignore_next_keyup = false; + return; + } - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + _handleCharacter(character, e); + } - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + /** + * determines if the keycode specified is a modifier key or not + * + * @param {string} key + * @returns {boolean} + */ + function _isModifier(key) { + return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; + } - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + /** + * called to set a 1 second timeout on the specified sequence + * + * this is so after each key press in the sequence you have 1 second + * to press the next key before you have to start over + * + * @returns void + */ + function _resetSequenceTimer() { + clearTimeout(_reset_timer); + _reset_timer = setTimeout(_resetSequences, 1000); + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + /** + * reverses the map lookup so that we can look for specific keys + * to see what can and can't use keypress + * + * @return {Object} + */ + function _getReverseMap() { + if (!_REVERSE_MAP) { + _REVERSE_MAP = {}; + for (var key in _MAP) { - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + // pull out the numeric keypad from here cause keypress should + // be able to detect the keys from the character + if (key > 95 && key < 112) { + continue; + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + if (_MAP.hasOwnProperty(key)) { + _REVERSE_MAP[_MAP[key]] = key; + } + } + } + return _REVERSE_MAP; + } - _longDateFormat : { - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + /** + * picks the best action based on the key combination + * + * @param {string} key - character for key + * @param {Array} modifiers + * @param {string=} action passed in + */ + function _pickBestAction(key, modifiers, action) { - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + // if no action was picked in we should try to pick the one + // that we think would work best for this key + if (!action) { + action = _getReverseMap()[key] ? 'keydown' : 'keypress'; + } - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + // modifier keys don't work as expected with keypress, + // switch to keydown + if (action == 'keypress' && modifiers.length) { + action = 'keydown'; + } - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; - }, + return action; + } - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + /** + * binds a key sequence to an event + * + * @param {string} combo - combo specified in bind call + * @param {Array} keys + * @param {Function} callback + * @param {string=} action + * @returns void + */ + function _bindSequence(combo, keys, callback, action) { - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + // start off by adding a sequence level record for this combination + // and setting the level to 0 + _sequence_levels[combo] = 0; - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + // if there is no action pick the best one for the first key + // in the sequence + if (!action) { + action = _pickBestAction(keys[0], []); + } - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', + /** + * callback to increase the sequence level for this sequence and reset + * all other sequences that were active + * + * @param {Event} e + * @returns void + */ + var _increaseSequence = function(e) { + _inside_sequence = action; + ++_sequence_levels[combo]; + _resetSequenceTimer(); + }, - preparse : function (string) { - return string; - }, + /** + * wraps the specified callback inside of another function in order + * to reset all sequence counters as soon as this sequence is done + * + * @param {Event} e + * @returns void + */ + _callbackAndReset = function(e) { + _fireCallback(callback, e); - postformat : function (string) { - return string; - }, + // we should ignore the next key up if the action is key down + // or keypress. this is so if you finish a sequence and + // release the key the final key will not trigger a keyup + if (action !== 'keyup') { + _ignore_next_keyup = _characterFromEvent(e); + } - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + // weird race condition if a sequence ends with the key + // another sequence begins with + setTimeout(_resetSequences, 10); + }, + i; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + // loop through keys one at a time and bind the appropriate callback + // function. for any key leading up to the final one it should + // increase the sequence. after the final, it should reset all sequences + for (i = 0; i < keys.length; ++i) { + _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); + } + } - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); + /** + * binds a single keyboard combination + * + * @param {string} combination + * @param {Function} callback + * @param {string=} action + * @param {string=} sequence_name - name of sequence if part of sequence + * @param {number=} level - what part of the sequence the command is + * @returns void + */ + function _bindSingle(combination, callback, action, sequence_name, level) { - /************************************ - Formatting - ************************************/ + // make sure multiple spaces in a row become a single space + combination = combination.replace(/\s+/g, ' '); + var sequence = combination.split(' '), + i, + key, + keys, + modifiers = []; - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + // if this pattern is a sequence of keys then run through this method + // to reprocess each pattern one key at a time + if (sequence.length > 1) { + return _bindSequence(combination, sequence, callback, action); + } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + // take the keys from this pattern and figure out what the actual + // pattern is all about + keys = combination === '+' ? ['+'] : combination.split('+'); - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + for (i = 0; i < keys.length; ++i) { + key = keys[i]; - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } + // normalize key names + if (_SPECIAL_ALIASES[key]) { + key = _SPECIAL_ALIASES[key]; + } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + // if this is not a keypress event then we should + // be smart about using shift keys + // this will only work for US keyboards however + if (action && action != 'keypress' && _SHIFT_MAP[key]) { + key = _SHIFT_MAP[key]; + modifiers.push('shift'); + } - format = expandFormat(format, m.localeData()); + // if this key is a modifier then add it to the list of modifiers + if (_isModifier(key)) { + modifiers.push(key); + } + } - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + // depending on what the key combination is + // we will try to pick the best event for it + action = _pickBestAction(key, modifiers, action); - return formatFunctions[format](m); - } + // make sure to initialize array if this is the first time + // a callback is added for this key + if (!_callbacks[key]) { + _callbacks[key] = []; + } + + // remove an existing match if there is one + _getMatches(key, modifiers, action, !sequence_name, combination); + + // add this call back to the array + // if it is a sequence put it at the beginning + // if not put it at the end + // + // this is important because the way these are processed expects + // the sequence ones to come first + _callbacks[key][sequence_name ? 'unshift' : 'push']({ + callback: callback, + modifiers: modifiers, + action: action, + seq: sequence_name, + level: level, + combo: combination + }); + } - function expandFormat(format, locale) { - var i = 5; + /** + * binds multiple combinations to the same callback + * + * @param {Array} combinations + * @param {Function} callback + * @param {string|undefined} action + * @returns void + */ + function _bindMultiple(combinations, callback, action) { + for (var i = 0; i < combinations.length; ++i) { + _bindSingle(combinations[i], callback, action); + } + } - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + // start! + _addEvent(document, 'keypress', _handleKey); + _addEvent(document, 'keydown', _handleKey); + _addEvent(document, 'keyup', _handleKey); - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + var mousetrap = { - return format; - } + /** + * binds an event to mousetrap + * + * can be a single key, a combination of keys separated with +, + * a comma separated list of keys, an array of keys, or + * a sequence of keys separated by spaces + * + * be sure to list the modifier keys first to make sure that the + * correct key ends up getting bound (the last key in the pattern) + * + * @param {string|Array} keys + * @param {Function} callback + * @param {string=} action - 'keypress', 'keydown', or 'keyup' + * @returns void + */ + bind: function(keys, callback, action) { + _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); + _direct_map[keys + ':' + action] = callback; + return this; + }, + /** + * unbinds an event to mousetrap + * + * the unbinding sets the callback function of the specified key combo + * to an empty function and deletes the corresponding key in the + * _direct_map dict. + * + * the keycombo+action has to be exactly the same as + * it was defined in the bind method + * + * TODO: actually remove this from the _callbacks dictionary instead + * of binding an empty function + * + * @param {string|Array} keys + * @param {string} action + * @returns void + */ + unbind: function(keys, action) { + if (_direct_map[keys + ':' + action]) { + delete _direct_map[keys + ':' + action]; + this.bind(keys, function() {}, action); + } + return this; + }, - /************************************ - Parsing - ************************************/ + /** + * triggers an event that has already been bound + * + * @param {string} keys + * @param {string=} action + * @returns void + */ + trigger: function(keys, action) { + _direct_map[keys + ':' + action](); + return this; + }, + /** + * resets the library back to its initial state. this is useful + * if you want to clear out the current keyboard shortcuts and bind + * new ones - for example if you switch to another page + * + * @returns void + */ + reset: function() { + _callbacks = {}; + _direct_map = {}; + return this; + } + }; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return parseTokenOrdinal; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } - } + module.exports = mousetrap; - function timezoneMinutesFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); - return parts[0] === '+' ? -minutes : minutes; - } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt(input, 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.8.3 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + + (function (undefined) { + /************************************ + Constants + ************************************/ - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = config._locale.isPM(input); - break; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - case 'h' : // fall through to hh - case 'hh' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } - } + var moment, + VERSION = '2.8.3', + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + // internal storage for locale config files + locales = {}, - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + // extra moment internal properties (plugins register props here) + momentProperties = [], - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - if (config._d) { - return; - } + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + parseTokenOrdinal = /\d{1,2}/, - currentDate = currentDateArray(config); + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, + + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + // format function strings + formatFunctions = {}, - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual zone can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); - } - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - function dateFromObject(config) { - var normalizedInput; + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - if (config._d) { - return; - } + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + deprecations = {}, - dateFromConfig(config); - } + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); } } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } - - config._a = []; - config._pf.empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); } + } - // handle am pm - if (config._isPm && config._a[HOUR] < 12) { - config._a[HOUR] += 12; - } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[HOUR] === 12) { - config._a[HOUR] = 0; - } + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - dateFromConfig(config); - checkOverflow(config); + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore; + /************************************ + Constructors + ************************************/ - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); } + copyConfig(this, config); + this._d = new Date(+config._d); + } - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - if (!isValid(tempConfig)) { - continue; - } + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + this._data = {}; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + this._locale = moment.localeData(); - tempConfig._pf.score = currentScore; + this._bubble(); + } - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; } } - extend(config, bestMoment || tempConfig); - } - - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; } + + return a; } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; } - } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } } - return res; + + return to; } - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); } else { - moment.createFromInputFallback(config); + return Math.floor(number); } } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); + while (output.length < targetLength) { + output = '0' + output; } - return date; + return (sign ? (forceSign ? '+' : '') : '-') + output; } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; } - return date; + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; } - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } - return input; + + return res; } - /************************************ - Relative Time - ************************************/ + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } } - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; } + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - /************************************ - Week of Year - ************************************/ + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + return normalizedInput; + } + function makeList(field) { + var count, setter; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; } - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + if (typeof format === 'number') { + index = format; + format = undefined; + } - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } }; } - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || moment.localeData(config._l); - - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); } else { - makeDateFromStringAndFormat(config); + value = Math.ceil(coercedNumber); } - } else { - makeDateFromInput(config); } - return new Moment(config); + return value; } - moment = function (input, format, locale, strict) { - var c; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - return makeMoment(c); - }; + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - moment.suppressDeprecationWarnings = false; + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i); - } - ); + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; } + + m._pf.overflow = overflow; } - return res; } - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - moment.max = function () { - var args = [].slice.call(arguments, 0); + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } + } + return m._isValid; + } - return pickBy('isAfter', args); - }; + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + return null; + } - return makeMoment(c).utc(); - }; + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + /************************************ + Locale + ************************************/ - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + extend(Locale.prototype, { - ret = new Duration(duration); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - return ret; - }; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // version number - moment.version = VERSION; + monthsParse : function (monthName) { + var i, mom, regex; - // default format - moment.defaultFormat = isoFormat; + if (!this._monthsParse) { + this._monthsParse = []; + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + weekdaysParse : function (weekdayName) { + var i, mom, regex; - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); + if (!this._weekdaysParse) { + this._weekdaysParse = []; } - else { - data = moment.localeData(key); + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } } + }, - if (data) { - moment.duration._locale = moment._locale = data; + _longDateFormat : { + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; } - } + return output; + }, - return moment._locale._abbr; - }; + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; } - locales[name].set(values); + }, - // backwards compat for now: also set the locale - moment.locale(name); + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - // returns locale data - moment.localeData = function (key) { - var locale; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, + + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; } + }); - if (!key) { - return moment._locale; + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); } + return input.replace(/\\/g, ''); + } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); } - key = [key]; } - return chooseLocale(key); - }; + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + format = expandFormat(format, m.localeData()); - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); } - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + function expandFormat(format, locale) { + var i = 5; - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; } - return m; - }; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + return format; + } - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; /************************************ - Moment Prototype + Parsing ************************************/ - extend(moment.fn = Moment.prototype, { - - clone : function () { - return moment(this); - }, + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return parseTokenOrdinal; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, + function timezoneMinutesFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - unix : function () { - return Math.floor(+this / 1000); - }, + return parts[0] === '+' ? -minutes : minutes; + } - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt(input, 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = config._locale.isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + config._pf.invalidWeekday = input; } - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - return isValid(this); - }, - - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - return false; - }, - - parsingFlags : function () { - return extend({}, this._pf); - }, + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - invalidAt: function () { - return this._pf.overflow; - }, + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - if (keepLocalTime) { - this.add(this._dateTzOffset(), 'm'); + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; } - return this; - }, - - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, - - add : createAdder(1, 'add'), - - subtract : createAdder(-1, 'subtract'), + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output, daysAdjust; + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - units = normalizeUnits(units); + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - daysAdjust = (this - moment(this).startOf('month')) - - (that - moment(that).startOf('month')); - // same as above but with zones, to negate all dst - daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4; - output += daysAdjust / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + if (config._d) { + return; + } - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + currentDate = currentDateArray(config); - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're zone'd or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this)); - }, + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - isLeapYear : function () { - return isLeapYear(this.year()); - }, + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - month : makeAccessor('Month', true), + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual zone can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + } + } - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + function dateFromObject(config) { + var normalizedInput; - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + if (config._d) { + return; + } - return this; - }, + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + dateFromConfig(config); + } - isAfter: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - return +this.clone().startOf(units) > +moment(input).startOf(units); - } - }, + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - isBefore: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - return +this.clone().startOf(units) < +moment(input).startOf(units); - } - }, + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - isSame: function (input, units) { - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - } - }, + config._a = []; + config._pf.empty = true; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateTzOffset(); + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.subtract(localAdjust, 'm'); + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } + else { + config._pf.unusedTokens.push(token); } - } else { - return this._isUTC ? offset : this._dateTzOffset(); - } - return this; - }, - - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, - - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, - - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); - } - return this; - }, - - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; + addTimeToArrayFromToken(token, parsedInput, config); } - else { - input = moment(input).zone(); + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); } + } - return (this.zone() - input) % 60 === 0; - }, + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + dateFromConfig(config); + checkOverflow(config); + } - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + scoreToBeat, + i, + currentScore; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + if (!isValid(tempConfig)) { + continue; + } - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + tempConfig._pf.score = currentScore; - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; } - return this; - }, + } - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + extend(config, bestMoment || tempConfig); + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; } - return this; } - }, - - lang : deprecate( - 'moment().lang() is deprecated. Use moment().localeData() instead.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; } } - ), + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - localeData : function () { - return this._locale; - }, + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - _dateTzOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return Math.round(this._d.getTimezoneOffset() / 15) * 15; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); } - }); + return res; + } - function rawMonthSetter(mom, value) { - var dayOfMonth; + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } } } + return input; + } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + + /************************************ + Week of Year + ************************************/ + + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() }; } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } /************************************ - Duration Prototype + Top Level Functions ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f; - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + config._locale = config._locale || moment.localeData(config._l); - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; - } + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - extend(moment.duration.fn = Duration.prototype, { + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + return new Moment(config); + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + moment = function (input, format, locale, strict) { + var c; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - hours = absRound(minutes / 60); - data.hours = hours % 24; + return makeMoment(c); + }; - days += absRound(hours / 24); + moment.suppressDeprecationWarnings = false; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i); + } + ); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + moment.min = function () { + var args = [].slice.call(arguments, 0); - data.days = days; - data.months = months; - data.years = years; - }, + return pickBy('isBefore', args); + }; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + moment.max = function () { + var args = [].slice.call(arguments, 0); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + return pickBy('isAfter', args); + }; - return this; - }, + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - weeks : function () { - return absRound(this.days() / 7); - }, + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + return makeMoment(c).utc(); + }; - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - return this.localeData().postformat(output); - }, + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + ret = new Duration(duration); - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - this._bubble(); + return ret; + }; - return this; - }, + // version number + moment.version = VERSION; - subtract : function (input, val) { - var dur = moment.duration(input, val); + // default format + moment.defaultFormat = isoFormat; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - this._bubble(); + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - return this; - }, + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - as : function (units) { - var days, months; - units = normalizeUnits(units); + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + yearsToDays(this._months / 12); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); } - }, - - lang : moment.fn.lang, - locale : moment.fn.locale, - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); + if (data) { + moment.duration._locale = moment._locale = data; } - ), + } - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + return moment._locale._abbr; + }; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); } + locales[name].set(values); - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + // backwards compat for now: also set the locale + moment.locale(name); - localeData : function () { - return this._locale; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; - - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } + }; - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); } - } + ); - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + // returns locale data + moment.localeData = function (key) { + var locale; - /************************************ - Default Locale - ************************************/ + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + if (!key) { + return moment._locale; + } - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - }); - /* EMBED_LOCALES */ + return chooseLocale(key); + }; - /************************************ - Exposing Moment - ************************************/ + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(67)(module))) + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { + return m; + }; - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - (function(window, undefined) { - 'use strict'; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + /************************************ + Moment Prototype + ************************************/ - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + extend(moment.fn = Moment.prototype, { - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + clone : function () { + return moment(this); + }, - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + unix : function () { + return Math.floor(+this / 1000); + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + isValid : function () { + return isValid(this); + }, - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + return false; + }, - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + parsingFlags : function () { + return extend({}, this._pf); + }, - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + invalidAt: function () { + return this._pf.overflow; + }, - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); + }, - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + if (keepLocalTime) { + this.add(this._dateTzOffset(), 'm'); + } + } + return this; + }, - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + add : createAdder(1, 'add'), - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + subtract : createAdder(-1, 'subtract'), - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output, daysAdjust; - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; - } + units = normalizeUnits(units); - // find what eventtypes we add listeners to - Event.determineEventTypes(); + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + daysAdjust = (this - moment(this).startOf('month')) - + (that - moment(that).startOf('month')); + // same as above but with zones, to negate all dst + daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4; + output += daysAdjust / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - // Hammer is ready...! - Hammer.READY = true; - } + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this)); + }, - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; } - dest[key] = src[key]; - } - return dest; - }, + }, - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + month : makeAccessor('Month', true), - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + return +this.clone().startOf(units) > +moment(input).startOf(units); } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } + }, + + isBefore: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + return +this.clone().startOf(units) < +moment(input).startOf(units); } - } - }, + }, - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + isSame: function (input, units) { + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + } + }, - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateTzOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } } + } else { + return this._isUTC ? offset : this._dateTzOffset(); } - return false; - } - }, + return this; + }, - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); } - node = node.parentNode; - } - return false; - }, + return this; + }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + return (this.zone() - input) % 60 === 0; + }, - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - return Math.atan2(y, x) * 180 / Math.PI; - }, + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - return Math.sqrt((x * x) + (y * y)); - }, + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; } + }, - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + lang : deprecate( + 'moment().lang() is deprecated. Use moment().localeData() instead.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } } + ), + + localeData : function () { + return this._locale; + }, + + _dateTzOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return Math.round(this._d.getTimezoneOffset() / 15) * 15; } - }, + }); - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - var falseFn = toggle && function() { - return false; - }; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } - }, + } + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } + + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + /************************************ + Duration Prototype + ************************************/ + - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; } - }; + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + extend(moment.duration.fn = Duration.prototype, { - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + hours = absRound(minutes / 60); + data.hours = hours % 24; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + days += absRound(hours / 24); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + data.days = days; + data.months = months; + data.years = years; + }, - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + return this; + }, - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + weeks : function () { + return absRound(this.days() / 7); + }, - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - // detection has been started, we keep track of this, see above - this.started = true; + return this.localeData().postformat(output); + }, - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + this._bubble(); - handler.call(Detection, evData); + return this; + }, - evData.eventType = triggerType; - delete evData.changedLength; - } + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + this._bubble(); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } + return this; + }, - return triggerType; - }, + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + yearsToDays(this._months / 12); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + }, - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } + lang : moment.fn.lang, + locale : moment.fn.locale, - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); } + ), - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - return touchList; + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; } + }); - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + moment.duration.fn.toString = moment.duration.fn.toISOString; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + /************************************ + Default Locale + ************************************/ - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + /* EMBED_LOCALES */ - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + /************************************ + Exposing Moment + ************************************/ - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + globalScope.moment = moment; } - }, + } - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } - var pt = ev.pointerType, - types = {}; + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(67)(module))) - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ + (function(window, undefined) { + 'use strict'; /** + * @main * @module hammer * - * @class Detection + * @class Hammer * @static */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], - - // data of the current Hammer.gesture detection session - current: null, - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - // when this becomes true, no gestures are fired - stopped: false, + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } - - this.stopped = false; - - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; - - this.detect(eventData); - }, + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - return eventData; - }, + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - // reset the current - this.current = null; - this.stopped = true; - }, + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; + } - Utils.extend(ev, { - startEvent: startEv, + // find what eventtypes we add listeners to + Event.determineEventTypes(); - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - return ev; - }, + // Hammer is ready...! + Hammer.READY = true; + } + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; } + return dest; + }, - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - // set its index - gesture.index = gesture.index || 1000; + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - // add Hammer.gesture to the list - this.gestures.push(gesture); + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } } - if(a.index > b.index) { - return 1; + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } } - return 0; - }); - - return this.gestures; - } - }; - - - /** - * @module hammer - */ + } + }, - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, /** - * @property element - * @type {HTMLElement} + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} */ - this.element = element; + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, /** - * @property enabled - * @type {Boolean} - * @protected + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found */ - this.enabled = true; + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); + + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle */ - this.eventHandlers = []; - }; + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + + return Math.atan2(y, x) * 180 / Math.PI; + }, - Hammer.Instance.prototype = { /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; }, /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance */ - off: function offEvent(gestures, handler) { - var self = this; + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; + return Math.sqrt((x * x) + (y * y)); }, /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } + return 1; + }, - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; - - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } - - element.dispatchEvent(event); - return this; + return 0; }, /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical */ - enable: function enable(state) { - this.enabled = state; - return this; + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; }, /** - * dispose this hammer instance - * @method dispose - * @return {Null} + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} */ - dispose: function dispose() { - var i, eh; + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } } + }, - this.eventHandlers = []; + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - return null; + var falseFn = toggle && function() { + return false; + }; + + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, + + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } }; /** - * @module gestures + * @module hammer */ /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag + * @class Event * @static */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - function dragGesture(ev, inst) { - var cur = Detection.current; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - var startCenter = cur.startEvent.center; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - var isVertical = Utils.isVertical(ev.direction); + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - case EVENT_END: - triggered = false; - break; + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); } - } - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + // detection has been started, we keep track of this, see above + this.started = true; - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + handler.call(Detection, evData); - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 + evData.eventType = triggerType; + delete evData.changedLength; } - }; - })('drag'); - - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - /** - * @param {String} name - */ - (function(name) { - var timer; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + return triggerType; + }, - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - // set the gesture so we can check in the timeout if it still is - current.name = name; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } + + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; + + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); } - break; + identifiers.push(touch.identifier); + }); - case EVENT_RELEASE: - clearTimeout(timer); - break; + return touchList; } - } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, + + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } + + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + /** - * @property holdTimeout - * @type {Number} - * @default 500 + * prevent the browser default actions + * mostly used to disable scrolling of the browser */ - holdTimeout: 500, + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 + * stop bubbling the event up to its parents */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; } }; - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, - - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; }, - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; - - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; } + + var pt = ev.pointerType, + types = {}; + + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, + + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } }; + /** - * @module gestures - */ - /** - * Single tap and a double tap on a place + * @module hammer * - * @class Tap + * @class Detection * @static */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + // data of the current Hammer.gesture detection session + current: null, - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // when this becomes true, no gestures are fired + stopped: false, - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + this.stopped = false; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + this.detect(eventData); + }, - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - }; - })('tap'); - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false + return eventData; }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } - if(inst.options.preventDefault) { - ev.preventDefault(); + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + + // reset the current + this.current = null; + this.stopped = true; + }, + + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - } - }; - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // we are transforming! - Detection.current.name = name; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + Utils.extend(ev, { + startEvent: startEv, - inst.trigger(name, ev); // basic transform event + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + return ev; + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; } - } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + + // set its index + gesture.index = gesture.index || 1000; + + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + return this.gestures; + } + }; - handler: transformGesture - }; - })('transform'); /** * @module hammer */ - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - /** - * Copyright 2012 Craig Campbell - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Mousetrap is a simple keyboard shortcut library for Javascript with - * no external dependencies + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @version 1.1.2 - * @url craig.is/killing/mice + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ + Hammer.Instance = function(element, options) { + var self = this; - /** - * mapping of special keycodes to their corresponding keys - * - * everything in this dictionary cannot use keypress events - * so it has to be here to map to the correct keycodes for - * keyup/keydown events - * - * @type {Object} - */ - var _MAP = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 20: 'capslock', - 27: 'esc', - 32: 'space', - 33: 'pageup', - 34: 'pagedown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'ins', - 46: 'del', - 91: 'meta', - 93: 'meta', - 224: 'meta' - }, - - /** - * mapping for special characters so they can support - * - * this dictionary is only used incase you want to bind a - * keyup or keydown event to one of these keys - * - * @type {Object} - */ - _KEYCODE_MAP = { - 106: '*', - 107: '+', - 109: '-', - 110: '.', - 111 : '/', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: '\'' - }, - - /** - * this is a mapping of keys that require shift on a US keypad - * back to the non shift equivelents - * - * this is so you can use keyup events with these keys - * - * note that this will only work reliably on US keyboards - * - * @type {Object} - */ - _SHIFT_MAP = { - '~': '`', - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0', - '_': '-', - '+': '=', - ':': ';', - '\"': '\'', - '<': ',', - '>': '.', - '?': '/', - '|': '\\' - }, + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - /** - * this is a list of special strings you can use to map - * to modifier keys when you specify your keyboard shortcuts - * - * @type {Object} - */ - _SPECIAL_ALIASES = { - 'option': 'alt', - 'command': 'meta', - 'return': 'enter', - 'escape': 'esc' - }, + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - /** - * variable to store the flipped version of _MAP from above - * needed to check if we should use keypress or not when no action - * is specified - * - * @type {Object|undefined} - */ - _REVERSE_MAP, + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - /** - * a list of all the callbacks setup via Mousetrap.bind() - * - * @type {Object} - */ - _callbacks = {}, + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - /** - * direct map of string combinations to callbacks used for trigger() - * - * @type {Object} - */ - _direct_map = {}, + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - /** - * keeps track of what level each sequence is at since multiple - * sequences can start out with the same sequence - * - * @type {Object} - */ - _sequence_levels = {}, + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - /** - * variable to store the setTimeout call - * - * @type {null|number} - */ - _reset_timer, + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - /** - * temporary state where we will ignore the next keyup - * - * @type {boolean|string} - */ - _ignore_next_keyup = false, + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - /** - * are we currently inside of a sequence? - * type of action ("keyup" or "keydown" or "keypress") or false - * - * @type {boolean|string} - */ - _inside_sequence = false; + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * loop through the f keys, f1 to f19 and add them to the map - * programatically - */ - for (var i = 1; i < 20; ++i) { - _MAP[111 + i] = 'f' + i; - } + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - /** - * loop through to map numbers on the numeric keypad - */ - for (i = 0; i <= 9; ++i) { - _MAP[i + 96] = i; - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - /** - * cross browser add event method - * - * @param {Element|HTMLDocument} object - * @param {string} type - * @param {Function} callback - * @returns void - */ - function _addEvent(object, type, callback) { - if (object.addEventListener) { - return object.addEventListener(type, callback, false); - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - object.attachEvent('on' + type, callback); - } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - /** - * takes the event and returns the key character - * - * @param {Event} e - * @return {string} - */ - function _characterFromEvent(e) { + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - // for keypress events we should return the character as is - if (e.type == 'keypress') { - return String.fromCharCode(e.which); - } + element.dispatchEvent(event); + return this; + }, - // for non keypress events the special maps are needed - if (_MAP[e.which]) { - return _MAP[e.which]; - } + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - if (_KEYCODE_MAP[e.which]) { - return _KEYCODE_MAP[e.which]; - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - // if it is not in the special map - return String.fromCharCode(e.which).toLowerCase(); - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - /** - * should we stop this event before firing off callbacks - * - * @param {Event} e - * @return {boolean} - */ - function _stop(e) { - var element = e.target || e.srcElement, - tag_name = element.tagName; + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } - // if the element has the class "mousetrap" then no need to stop - if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { - return false; - } + this.eventHandlers = []; - // stop for input, select, and textarea - return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - /** - * checks if two arrays are equal - * - * @param {Array} modifiers1 - * @param {Array} modifiers2 - * @returns {boolean} - */ - function _modifiersMatch(modifiers1, modifiers2) { - return modifiers1.sort().join(',') === modifiers2.sort().join(','); - } + return null; + } + }; - /** - * resets all sequence counters except for the ones passed in - * - * @param {Object} do_not_reset - * @returns void - */ - function _resetSequences(do_not_reset) { - do_not_reset = do_not_reset || {}; - var active_sequences = false, - key; + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - for (key in _sequence_levels) { - if (do_not_reset[key]) { - active_sequences = true; - continue; - } - _sequence_levels[key] = 0; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (!active_sequences) { - _inside_sequence = false; - } - } + function dragGesture(ev, inst) { + var cur = Detection.current; - /** - * finds all callbacks that match based on the keycode, modifiers, - * and action - * - * @param {string} character - * @param {Array} modifiers - * @param {string} action - * @param {boolean=} remove - should we remove any matches - * @param {string=} combination - * @returns {Array} - */ - function _getMatches(character, modifiers, action, remove, combination) { - var i, - callback, - matches = []; + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - // if there are no events related to this keycode - if (!_callbacks[character]) { - return []; - } + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // if a modifier key is coming up on its own we should allow it - if (action == 'keyup' && _isModifier(character)) { - modifiers = [character]; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // loop through all callbacks for the key that was pressed - // and see if any of them match - for (i = 0; i < _callbacks[character].length; ++i) { - callback = _callbacks[character][i]; + var startCenter = cur.startEvent.center; - // if this is a sequence but it is not at the right level - // then move onto the next match - if (callback.seq && _sequence_levels[callback.seq] != callback.level) { - continue; - } + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - // if the action we are looking for doesn't match the action we got - // then we should keep going - if (action != callback.action) { - continue; - } + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - // if this is a keypress event that means that we need to only - // look at the character, otherwise check the modifiers as - // well - if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - // remove is used so if you change your mind and call bind a - // second time with a new function the first one is overwritten - if (remove && callback.combo == combination) { - _callbacks[character].splice(i, 1); - } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - matches.push(callback); - } - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - return matches; - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - /** - * takes a key event and figures out what the modifiers are - * - * @param {Event} e - * @returns {Array} - */ - function _eventModifiers(e) { - var modifiers = []; + var isVertical = Utils.isVertical(ev.direction); - if (e.shiftKey) { - modifiers.push('shift'); - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - if (e.altKey) { - modifiers.push('alt'); - } + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - if (e.ctrlKey) { - modifiers.push('ctrl'); - } + case EVENT_END: + triggered = false; + break; + } + } - if (e.metaKey) { - modifiers.push('meta'); - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - return modifiers; - } + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - /** - * actually calls the callback function - * - * if your callback function returns false this will use the jquery - * convention - prevent default and stop propogation on the event - * - * @param {Function} callback - * @param {Event} e - * @returns void - */ - function _fireCallback(callback, e) { - if (callback(e) === false) { - if (e.preventDefault) { - e.preventDefault(); - } + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - if (e.stopPropagation) { - e.stopPropagation(); - } + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - e.returnValue = false; - e.cancelBubble = true; - } - } + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - /** - * handles a character key event - * - * @param {string} character - * @param {Event} e - * @returns void - */ - function _handleCharacter(character, e) { + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - // if this event should not happen stop here - if (_stop(e)) { - return; - } + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); + + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); + } + }; + + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - var callbacks = _getMatches(character, _eventModifiers(e), e.type), - i, - do_not_reset = {}, - processed_sequence_callback = false; + /** + * @param {String} name + */ + (function(name) { + var timer; - // loop through matching callbacks for this key event - for (i = 0; i < callbacks.length; ++i) { + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // fire for all sequence callbacks - // this is because if for example you have multiple sequences - // bound such as "g i" and "g t" they both need to fire the - // callback for matching g cause otherwise you can only ever - // match the first one - if (callbacks[i].seq) { - processed_sequence_callback = true; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - // keep a list of which sequences were matches for later - do_not_reset[callbacks[i].seq] = 1; - _fireCallback(callbacks[i].callback, e); - continue; - } + // set the gesture so we can check in the timeout if it still is + current.name = name; - // if there were no sequence matches but we are still here - // that means this is a regular match so we should fire that - if (!processed_sequence_callback && !_inside_sequence) { - _fireCallback(callbacks[i].callback, e); - } - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - // if you are inside of a sequence and the key you are pressing - // is not a modifier key then we should reset all sequences - // that were not matched by this key event - if (e.type == _inside_sequence && !_isModifier(character)) { - _resetSequences(do_not_reset); - } - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - /** - * handles a keydown event - * - * @param {Event} e - * @returns void - */ - function _handleKey(e) { + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } - // normalize e.which for key events - // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion - e.which = typeof e.which == "number" ? e.which : e.keyCode; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - var character = _characterFromEvent(e); + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); - // no character found then stop - if (!character) { - return; - } + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } + } + }; - if (e.type == 'keyup' && _ignore_next_keyup == character) { - _ignore_next_keyup = false; - return; - } + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - _handleCharacter(character, e); - } + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - /** - * determines if the keycode specified is a modifier key or not - * - * @param {string} key - * @returns {boolean} - */ - function _isModifier(key) { - return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; - } + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - /** - * called to set a 1 second timeout on the specified sequence - * - * this is so after each key press in the sequence you have 1 second - * to press the next key before you have to start over - * - * @returns void - */ - function _resetSequenceTimer() { - clearTimeout(_reset_timer); - _reset_timer = setTimeout(_resetSequences, 1000); - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - /** - * reverses the map lookup so that we can look for specific keys - * to see what can and can't use keypress - * - * @return {Object} - */ - function _getReverseMap() { - if (!_REVERSE_MAP) { - _REVERSE_MAP = {}; - for (var key in _MAP) { + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - // pull out the numeric keypad from here cause keypress should - // be able to detect the keys from the character - if (key > 95 && key < 112) { - continue; - } + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - if (_MAP.hasOwnProperty(key)) { - _REVERSE_MAP[_MAP[key]] = key; - } - } - } - return _REVERSE_MAP; - } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; - /** - * picks the best action based on the key combination - * - * @param {string} key - character for key - * @param {Array} modifiers - * @param {string=} action passed in - */ - function _pickBestAction(key, modifiers, action) { + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - // if no action was picked in we should try to pick the one - // that we think would work best for this key - if (!action) { - action = _getReverseMap()[key] ? 'keydown' : 'keypress'; - } + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - // modifier keys don't work as expected with keypress, - // switch to keydown - if (action == 'keypress' && modifiers.length) { - action = 'keydown'; - } + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - return action; - } + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - /** - * binds a key sequence to an event - * - * @param {string} combo - combo specified in bind call - * @param {Array} keys - * @param {Function} callback - * @param {string=} action - * @returns void - */ - function _bindSequence(combo, keys, callback, action) { + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - // start off by adding a sequence level record for this combination - // and setting the level to 0 - _sequence_levels[combo] = 0; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - // if there is no action pick the best one for the first key - // in the sequence - if (!action) { - action = _pickBestAction(keys[0], []); - } + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - /** - * callback to increase the sequence level for this sequence and reset - * all other sequences that were active - * - * @param {Event} e - * @returns void - */ - var _increaseSequence = function(e) { - _inside_sequence = action; - ++_sequence_levels[combo]; - _resetSequenceTimer(); - }, + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - /** - * wraps the specified callback inside of another function in order - * to reset all sequence counters as soon as this sequence is done - * - * @param {Event} e - * @returns void - */ - _callbackAndReset = function(e) { - _fireCallback(callback, e); + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - // we should ignore the next key up if the action is key down - // or keypress. this is so if you finish a sequence and - // release the key the final key will not trigger a keyup - if (action !== 'keyup') { - _ignore_next_keyup = _characterFromEvent(e); - } + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - // weird race condition if a sequence ends with the key - // another sequence begins with - setTimeout(_resetSequences, 10); - }, - i; + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - // loop through keys one at a time and bind the appropriate callback - // function. for any key leading up to the final one it should - // increase the sequence. after the final, it should reset all sequences - for (i = 0; i < keys.length; ++i) { - _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); - } - } + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - /** - * binds a single keyboard combination - * - * @param {string} combination - * @param {Function} callback - * @param {string=} action - * @param {string=} sequence_name - name of sequence if part of sequence - * @param {number=} level - what part of the sequence the command is - * @returns void - */ - function _bindSingle(combination, callback, action, sequence_name, level) { + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - // make sure multiple spaces in a row become a single space - combination = combination.replace(/\s+/g, ' '); + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - var sequence = combination.split(' '), - i, - key, - keys, - modifiers = []; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - // if this pattern is a sequence of keys then run through this method - // to reprocess each pattern one key at a time - if (sequence.length > 1) { - return _bindSequence(combination, sequence, callback, action); - } + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // take the keys from this pattern and figure out what the actual - // pattern is all about - keys = combination === '+' ? ['+'] : combination.split('+'); + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - // normalize key names - if (_SPECIAL_ALIASES[key]) { - key = _SPECIAL_ALIASES[key]; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - // if this is not a keypress event then we should - // be smart about using shift keys - // this will only work for US keyboards however - if (action && action != 'keypress' && _SHIFT_MAP[key]) { - key = _SHIFT_MAP[key]; - modifiers.push('shift'); - } + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // if this key is a modifier then add it to the list of modifiers - if (_isModifier(key)) { - modifiers.push(key); - } - } + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - // depending on what the key combination is - // we will try to pick the best event for it - action = _pickBestAction(key, modifiers, action); + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - // make sure to initialize array if this is the first time - // a callback is added for this key - if (!_callbacks[key]) { - _callbacks[key] = []; - } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - // remove an existing match if there is one - _getMatches(key, modifiers, action, !sequence_name, combination); + // we are transforming! + Detection.current.name = name; - // add this call back to the array - // if it is a sequence put it at the beginning - // if not put it at the end - // - // this is important because the way these are processed expects - // the sequence ones to come first - _callbacks[key][sequence_name ? 'unshift' : 'push']({ - callback: callback, - modifiers: modifiers, - action: action, - seq: sequence_name, - level: level, - combo: combination - }); - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * binds multiple combinations to the same callback - * - * @param {Array} combinations - * @param {Function} callback - * @param {string|undefined} action - * @returns void - */ - function _bindMultiple(combinations, callback, action) { - for (var i = 0; i < combinations.length; ++i) { - _bindSingle(combinations[i], callback, action); - } - } + inst.trigger(name, ev); // basic transform event - // start! - _addEvent(document, 'keypress', _handleKey); - _addEvent(document, 'keydown', _handleKey); - _addEvent(document, 'keyup', _handleKey); + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - var mousetrap = { + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - /** - * binds an event to mousetrap - * - * can be a single key, a combination of keys separated with +, - * a comma separated list of keys, an array of keys, or - * a sequence of keys separated by spaces - * - * be sure to list the modifier keys first to make sure that the - * correct key ends up getting bound (the last key in the pattern) - * - * @param {string|Array} keys - * @param {Function} callback - * @param {string=} action - 'keypress', 'keydown', or 'keyup' - * @returns void - */ - bind: function(keys, callback, action) { - _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); - _direct_map[keys + ':' + action] = callback; - return this; - }, + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - /** - * unbinds an event to mousetrap - * - * the unbinding sets the callback function of the specified key combo - * to an empty function and deletes the corresponding key in the - * _direct_map dict. - * - * the keycombo+action has to be exactly the same as - * it was defined in the bind method - * - * TODO: actually remove this from the _callbacks dictionary instead - * of binding an empty function - * - * @param {string|Array} keys - * @param {string} action - * @returns void - */ - unbind: function(keys, action) { - if (_direct_map[keys + ':' + action]) { - delete _direct_map[keys + ':' + action]; - this.bind(keys, function() {}, action); - } - return this; - }, + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - /** - * triggers an event that has already been bound - * - * @param {string} keys - * @param {string=} action - * @returns void - */ - trigger: function(keys, action) { - _direct_map[keys + ':' + action](); - return this; - }, + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - /** - * resets the library back to its initial state. this is useful - * if you want to clear out the current keyboard shortcuts and bind - * new ones - for example if you switch to another page - * - * @returns void - */ - reset: function() { - _callbacks = {}; - _direct_map = {}; - return this; - } - }; + handler: transformGesture + }; + })('transform'); - module.exports = mousetrap; + /** + * @module hammer + */ + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); /***/ }, /* 56 */ diff --git a/dist/vis.map b/dist/vis.map index 2be1ff4e..deeb0f57 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","low","high","middle","item","isVisible","start","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","found","newLow","newHigh","guess","console","log","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","checkFirstStep","time","getHiddenDurationBetween","correctTimeForHidden","conversion","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","initTime","done","initStart","initEnd","changed","anyChanged","_cancelAnimation","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","subgroupIndex","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","initialX","selected","dragLeftItem","dragRightItem","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","low","high","middle","item","isVisible","start","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","found","newLow","newHigh","guess","console","log","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","checkFirstStep","time","getHiddenDurationBetween","correctTimeForHidden","conversion","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","initTime","done","initStart","initEnd","changed","anyChanged","_cancelAnimation","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","subgroupIndex","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","initialX","selected","dragLeftItem","dragRightItem","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.css b/dist/vis.min.css index e0996856..b4284d14 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;width:100%;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 904ab645..c8295d72 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -27,12 +27,12 @@ this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:u.min,this.valu },e.avg=function(t,i){return new e((t.x+i.x)/2,(t.y+i.y)/2,(t.z+i.z)/2)},e.crossProduct=function(t,i){var s=new e;return s.x=t.y*i.z-t.z*i.y,s.y=t.z*i.x-t.x*i.z,s.z=t.x*i.y-t.y*i.x,s},e.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=e},function(t,e,i){function s(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var o=i(1);s.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(52),i(44),i(1)),n=i(3),r=i(4),a=i(16),h=i(45),d=i(29),l=i(20),c=i(21),p=i(26);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(52),i(44),i(1)),n=i(3),r=i(4),a=i(16),h=i(45),d=i(29),l=i(20),c=i(21),p=i(28);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(43);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=n&&r>i){e=!0;break}}if(1==e&&i<=t._end.valueOf()){var a=s(r);t.current=a.toDate()}},e.toScreen=function(t,i,s){var o=e.isHidden(i,t.body.hiddenDates);1==o.hidden&&(i=o.startDate);var n=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end);i=e.correctTimeForHidden(t.body.hiddenDates,t.range,i);var r=t.range.conversion(s,n);return(i.valueOf()-r.offset)*r.scale},e.toTime=function(t,i,s,o){var n=e.getHiddenDurationBetween(t.hiddenDates,i.start,i.end),r=i.end-i.start-n,a=r*s/o,h=e.getAccumulatedHiddenDuration(t.hiddenDates,i,a),d=new Date(h+a+i.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var s=0,o=0;o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(46),h=i(43),d=i(19),l=i(14);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,m=i||null===o?o:r.easeInOutQuad(e,h,o,c),g=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(m,g),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1;return s()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var m={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",m),this.body.emitter.emit("rangechanged",m)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.start-(i-o))*e,h=i+r+(this.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[])}var o=i(43),n=i(14);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case s.SCALE.YEAR:case s.SCALE.MONTH:case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case s.SCALE.MILLISECOND:case s.SCALE.SECOND:case s.SCALE.MINUTE:case s.SCALE.HOUR:return!0;default:return!1}switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(19),r=i(43),a=i(47);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(19),a=i(43),h=i(47);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(19),a=i(15);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ns;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(3),a=i(4),h=i(19),d=i(24),l=i(25),c=i(32),p=i(33),u=i(34),f=i(31),m="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:f,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{prevent_default:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable)); var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,f,c),n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[m];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[m];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[m];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[m]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:m},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==m||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(19);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(19),d=i(22),l=i(23),c=i(27),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=o0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s.prototype._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg) -}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;ic;){c++;var p=h.getCurrent(),u=this.body.util.toScreen(p),f=h.isMajor();this.options.showMinorLabels&&this._repaintMinorText(u,h.getLabelMinor(),t),f&&this.options.showMajorLabels?(u>0&&(void 0==l&&(l=u),this._repaintMajorText(u,h.getLabelMajor(),t)),this._repaintMajorLine(u,t)):this._repaintMinorLine(u,t),h.next()}if(this.options.showMajorLabels){var m=this.body.util.toTime(0),g=h.getLabelMajor(m),v=g.length*(this.props.majorCharWidth||10)+10;(void 0==l||l>v)&&this._repaintMajorText(0,g,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(44),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(30);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(52),n=i(44),r=i(55),a=i(1),h=i(46),d=i(3),l=i(4),c=i(41),p=i(42),u=i(37),f=i(38),m=i(39),g=i(36),v=i(40),y=i(50),b=i(51),_=i(48);i(49),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border +}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;ic;){c++;var p=h.getCurrent(),u=this.body.util.toScreen(p),f=h.isMajor();this.options.showMinorLabels&&this._repaintMinorText(u,h.getLabelMinor(),t),f&&this.options.showMajorLabels?(u>0&&(void 0==l&&(l=u),this._repaintMajorText(u,h.getLabelMajor(),t)),this._repaintMajorLine(u,t)):this._repaintMinorLine(u,t),h.next()}if(this.options.showMajorLabels){var m=this.body.util.toTime(0),g=h.getLabelMajor(m),v=g.length*(this.props.majorCharWidth||10)+10;(void 0==l||l>v)&&this._repaintMajorText(0,g,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(44),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(30);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(52),n=i(44),r=i(53),a=i(1),h=i(46),d=i(3),l=i(4),c=i(41),p=i(42),u=i(37),f=i(38),m=i(39),g=i(36),v=i(40),y=i(50),b=i(51),_=i(48);i(49),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border }if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e&&1==this.constants.dragNodes){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height,oldWidth:s,oldHeight:o})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(39);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,f,m,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.options.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==n&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=M.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=M.DELIMITER);var i=O+n();if(C[i])return k=M.DELIMITER,L=i,o(),void o();if(C[O])return k=M.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=M.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=M.IDENTIFIER)}for(k=M.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==M.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=M.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=M.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==M.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=M.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=M.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=M.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=f,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=f,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){return h.toTime(this.body,this.range,t,this.props.center.width)},s.prototype._toGlobalTime=function(t){return h.toTime(this.body,this.range,t,this.props.root.width)},s.prototype._toScreen=function(t){return h.toScreen(this,t,this.props.center.width)},s.prototype._toGlobalScreen=function(t){return h.toScreen(this,t,this.props.root.width)},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(62),o=i(56),n=i(57),r=i(58),a=i(59),h=i(60),d=i(61);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(55),r=i(52),a=i(44),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){De.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=De.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}De[t]=function(s,o){var r,a,h=De._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=De().utc().set(i,t); -return h.call(De._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(De([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=De.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),De.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?De(t).zone(e._offset||0):De(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=De.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=De.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[ke],pe(De(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[ke],pe(De(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===De.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,De.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=De.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=De(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||De.localeData(t._l),null===e||i===n&&""===e?De.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),De.isMoment(e)?new m(e,!0):(i?M(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&M(e[0])&&(e=e[0]),!e.length)return De();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=De.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=De([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),De=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},De.suppressDeprecationWarnings=!1,De.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),De.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},De.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},De.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},De.unix=function(t){return De(1e3*t)},De.duration=function(t,e){var i,s,o,n,r=t,h=null;return De.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(De(r.from),De(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),De.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},De.version=Ee,De.defaultFormat=di,De.ISO_8601=function(){},De.momentProperties=He,De.updateOffset=function(){},De.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},De.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return De.locale(t,e)}),De.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?De.defineLocale(t,e):De.localeData(t),i&&(De.duration._locale=De._locale=i)),De._locale._abbr},De.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),De.locale(t),Fe[t]):(delete Fe[t],null)},De.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return De.localeData(t)}),De.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return De._locale;if(!M(t)){if(e=Y(t))return e;t=[t]}return H(t)},De.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},De.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);De.normalizeUnits=function(t){return T(t)},De.invalid=function(t){var e=De.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},De.parseZone=function(){return De.apply(null,arguments).parseZone()},De.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(De.fn=m.prototype,{clone:function(){return De(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=De(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||De.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-De(this).startOf("month")-(r-De(r).startOf("month")),n-=6e4*(this.zone()-De(this).startOf("month").zone()-(r.zone()-De(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return De.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(De(),t)},calendar:function(t){var e=t||De(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+De(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=De.isMoment(t)?t:De(t),+t>+this):+this.clone().startOf(e)<+De(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=De.isMoment(t)?t:De(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=De.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=De.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?D(this,De.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,De.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?De(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((De(this).startOf("day")-De(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=De.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),De.fn.millisecond=De.fn.milliseconds=be("Milliseconds",!1),De.fn.second=De.fn.seconds=be("Seconds",!1),De.fn.minute=De.fn.minutes=be("Minutes",!1),De.fn.hour=De.fn.hours=be("Hours",!0),De.fn.date=be("Date",!0),De.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),De.fn.year=be("FullYear",!0),De.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),De.fn.days=De.fn.day,De.fn.months=De.fn.month,De.fn.weeks=De.fn.week,De.fn.isoWeeks=De.fn.isoWeek,De.fn.quarters=De.fn.quarter,De.fn.toJSON=De.fn.toISOString,v(De.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=De.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=De.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:De.fn.lang,locale:De.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),De.duration.fn.toString=De.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());De.duration.fn.asMilliseconds=function(){return this.as("ms")},De.duration.fn.asSeconds=function(){return this.as("s")},De.duration.fn.asMinutes=function(){return this.as("m")},De.duration.fn.asHours=function(){return this.as("h")},De.duration.fn.asDays=function(){return this.as("d")},De.duration.fn.asWeeks=function(){return this.as("weeks")},De.duration.fn.asMonths=function(){return this.as("M")},De.duration.fn.asYears=function(){return this.as("y")},De.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=De:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=Me),De}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(67)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in C)t[e]?i=!0:C[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!D[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},D={},M={},C={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),M[t+":"+i]=e,this},unbind:function(t,e){return M[t+":"+e]&&(delete M[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return M[t+":"+e](),this},reset:function(){return D={},M={},this}};t.exports=L},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(39);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t -},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(39),n=i(36);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(44));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;os&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=M.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=M.DELIMITER);var i=O+n();if(C[i])return k=M.DELIMITER,L=i,o(),void o();if(C[O])return k=M.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=M.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=M.IDENTIFIER)}for(k=M.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==M.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=M.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=M.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==M.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=M.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=M.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=M.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=f,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=f,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){return h.toTime(this.body,this.range,t,this.props.center.width)},s.prototype._toGlobalTime=function(t){return h.toTime(this.body,this.range,t,this.props.root.width)},s.prototype._toScreen=function(t){return h.toScreen(this,t,this.props.center.width)},s.prototype._toGlobalScreen=function(t){return h.toScreen(this,t,this.props.root.width)},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(62),o=i(56),n=i(57),r=i(58),a=i(59),h=i(60),d=i(61);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(53),r=i(52),a=i(44),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in C)t[e]?i=!0:C[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!D[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},D={},M={},C={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),M[t+":"+i]=e,this},unbind:function(t,e){return M[t+":"+e]&&(delete M[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return M[t+":"+e](),this},reset:function(){return D={},M={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i; +default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){De.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=De.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}De[t]=function(s,o){var r,a,h=De._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=De().utc().set(i,t);return h.call(De._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(De([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=De.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),De.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?De(t).zone(e._offset||0):De(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=De.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=De.parseTwoDigitYear(e)}}function q(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[ke],pe(De(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[ke],pe(De(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===De.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,De.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=De.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=De(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||De.localeData(t._l),null===e||i===n&&""===e?De.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),De.isMoment(e)?new m(e,!0):(i?M(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&M(e[0])&&(e=e[0]),!e.length)return De();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=De.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=De([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),De=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},De.suppressDeprecationWarnings=!1,De.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),De.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},De.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},De.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},De.unix=function(t){return De(1e3*t)},De.duration=function(t,e){var i,s,o,n,r=t,h=null;return De.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(De(r.from),De(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),De.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},De.version=Ee,De.defaultFormat=di,De.ISO_8601=function(){},De.momentProperties=He,De.updateOffset=function(){},De.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},De.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return De.locale(t,e)}),De.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?De.defineLocale(t,e):De.localeData(t),i&&(De.duration._locale=De._locale=i)),De._locale._abbr},De.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),De.locale(t),Fe[t]):(delete Fe[t],null)},De.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return De.localeData(t)}),De.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return De._locale;if(!M(t)){if(e=Y(t))return e;t=[t]}return H(t)},De.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},De.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);De.normalizeUnits=function(t){return T(t)},De.invalid=function(t){var e=De.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},De.parseZone=function(){return De.apply(null,arguments).parseZone()},De.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(De.fn=m.prototype,{clone:function(){return De(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=De(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||De.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-De(this).startOf("month")-(r-De(r).startOf("month")),n-=6e4*(this.zone()-De(this).startOf("month").zone()-(r.zone()-De(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return De.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(De(),t)},calendar:function(t){var e=t||De(),i=B(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+De(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=De.isMoment(t)?t:De(t),+t>+this):+this.clone().startOf(e)<+De(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=De.isMoment(t)?t:De(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=De.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=De.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?D(this,De.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,De.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?De(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((De(this).startOf("day")-De(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=De.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),De.fn.millisecond=De.fn.milliseconds=be("Milliseconds",!1),De.fn.second=De.fn.seconds=be("Seconds",!1),De.fn.minute=De.fn.minutes=be("Minutes",!1),De.fn.hour=De.fn.hours=be("Hours",!0),De.fn.date=be("Date",!0),De.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),De.fn.year=be("FullYear",!0),De.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),De.fn.days=De.fn.day,De.fn.months=De.fn.month,De.fn.weeks=De.fn.week,De.fn.isoWeeks=De.fn.isoWeek,De.fn.quarters=De.fn.quarter,De.fn.toJSON=De.fn.toISOString,v(De.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=De.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=De.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:De.fn.lang,locale:De.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),De.duration.fn.toString=De.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());De.duration.fn.asMilliseconds=function(){return this.as("ms")},De.duration.fn.asSeconds=function(){return this.as("s")},De.duration.fn.asMinutes=function(){return this.as("m")},De.duration.fn.asHours=function(){return this.as("h")},De.duration.fn.asDays=function(){return this.as("d")},De.duration.fn.asWeeks=function(){return this.as("weeks")},De.duration.fn.asMonths=function(){return this.as("M")},De.duration.fn.asYears=function(){return this.as("y")},De.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=De:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=Me),De +}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(67)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",m=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(39);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t +},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(39),n=i(36);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(this.triggerFunctions.del.length=2))throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(44));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.id)}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=63},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map \ No newline at end of file