From d11653503d75a7b4fc77de2a6d3c54b6c27741be Mon Sep 17 00:00:00 2001 From: Alex de Mulder Date: Wed, 23 Jul 2014 18:04:42 +0200 Subject: [PATCH] made getItemRange respect visible graphgroups --- dist/vis.js | 8316 +++++++++++++++++++-------------------- dist/vis.map | 2 +- dist/vis.min.js | 14 +- lib/timeline/Graph2d.js | 28 +- 4 files changed, 4178 insertions(+), 4182 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index f197b1b6..d8e89143 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -6042,7 +6042,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(43); + var Core = __webpack_require__(42); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6330,7 +6330,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(43); + var Core = __webpack_require__(42); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6583,22 +6583,20 @@ return /******/ (function(modules) { // webpackBootstrap * When no maximum is found, max==null */ Graph2d.prototype.getItemRange = function() { - // calculate min from start filed - var dataset = this.itemsData.getDataSet(), - min = null, - max = null; - - if (dataset) { - // calculate the minimum value of the field 'start' - var minItem = dataset.min('x'); - min = minItem ? util.convert(minItem.x, 'Date').valueOf() : null; - // Note: we convert first to Date and then to number because else - // a conversion from ISODate to Number will fail + var min = null; + var max = null; - // calculate maximum value of fields 'start' and 'end' - var maxStartItem = dataset.max('x'); - if (maxStartItem) { - max = util.convert(maxStartItem.x, 'Date').valueOf(); + // calculate min from start filed + for (var groupId in this.linegraph.groups) { + if (this.linegraph.groups.hasOwnProperty(groupId)) { + if (this.linegraph.groups[groupId].visible == true) { + for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { + var item = this.linegraph.groups[groupId].itemsData[i]; + var value = util.convert(item.x, 'Date').valueOf(); + min = min == null ? value : min > value ? value : min; + max = max == null ? value : max < value ? value : max; + } + } } } @@ -6845,7 +6843,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(42); + var hammerUtil = __webpack_require__(43); var moment = __webpack_require__(40); var Component = __webpack_require__(18); @@ -13395,7 +13393,7 @@ return /******/ (function(modules) { // webpackBootstrap var Hammer = __webpack_require__(41); var mousetrap = __webpack_require__(47); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(42); + var hammerUtil = __webpack_require__(43); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(38); @@ -19155,7 +19153,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__(48); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(49); /***/ }, @@ -19165,7 +19163,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__(49); + module.exports = window['Hammer'] || __webpack_require__(48); } else { module.exports = function () { @@ -19176,40 +19174,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 42 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(41); - - /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event - */ - exports.fakeGesture = function(element, event) { - var eventType = null; - - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); - - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); - - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; - } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; - } - - return gesture; - }; - - -/***/ }, -/* 43 */ /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(46); @@ -19876,6 +19840,40 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Core; +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(41); + + /** + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event + */ + exports.fakeGesture = function(element, event) { + var eventType = null; + + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); + + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; + } + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; + } + + return gesture; + }; + + /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { @@ -21290,4785 +21288,4785 @@ return /******/ (function(modules) { // webpackBootstrap /* 48 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.7.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com - - (function (undefined) { + 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 */ - /************************************ - Constants - ************************************/ + (function(window, undefined) { + 'use strict'; - var moment, - VERSION = "2.7.0", - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - i, + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * 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 || {}); + }; - // internal storage for language config files - languages = {}, + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // moment internal properties - momentProperties = { - _isAMomentObject: null, - _i : null, - _f : null, - _l : null, - _strict : null, - _tzm : null, - _isUTC : null, - _offset : null, // optional. Combine with _isUTC - _pf : null, - _lang : null // optional - }, + /** + * 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', - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + /** + * 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', - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * 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', - // 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)$/, + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // 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, + /** + * 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', - // 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}/, + /** + * 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)' + } + }; - //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 + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // 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)?)?$/, + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - 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}/] - ], + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - // 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/] - ], + /** + * 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; - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - // 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 - }, + /** + * 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 = {}; - 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' - }, + /** + * 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'; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + /** + * 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'; - // format function strings - formatFunctions = {}, + /** + * 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'; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, //seconds to minutes - m: 45, //minutes to hours - h: 22, //hours to days - dd: 25, //days to month (month == 1) - dm: 45, //days to months (months > 1) - dy: 345 //days to year - }, + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.lang().monthsShort(this, format); - }, - MMMM : function (format) { - return this.lang().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.lang().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.lang().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.lang().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.lang().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.lang().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(); - } - }, - - 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 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 deprecate(msg, fn) { - var firstTime = true; - function printMsg() { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn("Deprecation warning: " + msg); - } - } - return extend(function () { - if (firstTime) { - printMsg(); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.lang().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 Language() { - - } + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - // Moment prototype object - function Moment(config) { - checkOverflow(config); - extend(this, config); + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - // 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 = {}; + // find what eventtypes we add listeners to + Event.determineEventTypes(); - this._bubble(); - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - /************************************ - Helpers - ************************************/ + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // Hammer is ready...! + Hammer.READY = true; + } - function extend(a, b) { - for (var i in b) { - if (b.hasOwnProperty(i)) { - a[i] = b[i]; + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; } + dest[key] = src[key]; } + return dest; + }, - if (b.hasOwnProperty("toString")) { - a.toString = b.toString; - } + /** + * 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); + }, - if (b.hasOwnProperty("valueOf")) { - a.valueOf = b.valueOf; - } + /** + * 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); + }, - return a; - } + /** + * 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; - function cloneMoment(m) { - var result = {}, i; - for (i in m) { - if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { - result[i] = m[i]; + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } } } + }, - return result; - } + /** + * 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; + }, - function absRound(number) { - if (number < 0) { - return Math.ceil(number); + /** + * 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 { - return Math.floor(number); + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } - } + }, - // 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; + /** + * 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); + }, - while (output.length < targetLength) { - output = '0' + output; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + return false; + }, - // helper function for _.addTime and _.subtractTime - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (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); + // 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 + }; } - } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + 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 + }; + }, - // 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; - } + /** + * 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 + }; + }, - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + /** + * 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; - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + return Math.atan2(y, x) * 180 / Math.PI; + }, - for (prop in inputObject) { - if (inputObject.hasOwnProperty(prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - return normalizedInput; - } + /** + * 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; - function makeList(field) { - var count, setter; + return Math.sqrt((x * x) + (y * y)); + }, - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; + /** + * 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; + }, - moment[field] = function (format, index) { - var i, getter, - method = moment.fn._lang[field], - results = []; + /** + * 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; + }, - if (typeof format === 'number') { - index = format; - format = undefined; - } + /** + * 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; + }, - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment.fn._lang, m, format || ''); - }; + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; + 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); } - }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; } } + }, - return value; - } - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + /** + * 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 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; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + var falseFn = toggle && function() { + return false; + }; - m._pf.overflow = overflow; + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - } - - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - return m._isValid; - } - - function normalizeLanguage(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + }, - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); + /** + * 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(); + }); } + }; - /************************************ - Languages - ************************************/ - - - extend(Language.prototype, { - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, + /** + * @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, - _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - months : function (m) { - return this._months[m.month()]; - }, + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - monthsParse : function (monthName) { - var i, mom, regex; + /** + * 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); + }); + }, - if (!this._monthsParse) { - this._monthsParse = []; - } - - 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; - } - } - }, - - _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + /** + * 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); + }); + }, - _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + /** + * 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; - _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - weekdaysParse : function (weekdayName) { - var i, mom, regex; + // 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; - if (!this._weekdaysParse) { - this._weekdaysParse = []; + // 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; } - 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; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); } - }, - _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; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); } - return output; - }, - 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'); - }, + // ...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 + } - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); } - }, + }; - _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; - }, + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - _relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * the core 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; - ordinal : function (number) { - return this._ordinal.replace("%d", number); - }, - _ordinal : "%d", + // 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; - preparse : function (string) { - return string; - }, + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - postformat : function (string) { - return string; - }, + // 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; + } - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + // detection has been started, we keep track of this, see above + this.started = true; - _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. - }, + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + // 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); } - }); - // Loads a language definition into the `languages` cache. The function - // takes a key and optionally values. If not in the browser and no values - // are provided, it will load the language file module. As a convenience, - // this function also returns the language values. - function loadLang(key, values) { - values.abbr = key; - if (!languages[key]) { - languages[key] = new Language(); - } - languages[key].set(values); - return languages[key]; - } + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - // Remove a language from the `languages` cache. Mostly useful in tests. - function unloadLang(key) { - delete languages[key]; - } + handler.call(Detection, evData); - // Determines which language definition to use and returns it. - // - // With no parameters, it will return the global language. If you - // pass in a language key, such as 'en', it will return the - // definition for 'en', so long as 'en' has already been loaded using - // moment.lang. - function getLangDefinition(key) { - var i = 0, j, lang, next, split, - get = function (k) { - if (!languages[k] && hasModule) { - try { - __webpack_require__(57)("./" + k); - } catch (e) { } - } - return languages[k]; - }; - - if (!key) { - return moment.fn._lang; + evData.eventType = triggerType; + delete evData.changedLength; } - if (!isArray(key)) { - //short-circuit everything else - lang = get(key); - if (lang) { - return lang; - } - key = [key]; - } + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - //pick the language from the array - //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - while (i < key.length) { - split = normalizeLanguage(key[i]).split('-'); - j = split.length; - next = normalizeLanguage(key[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - lang = get(split.slice(0, j).join('-')); - if (lang) { - return lang; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; } - return moment.fn._lang; - } - - /************************************ - Formatting - ************************************/ + return triggerType; + }, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ""); + /** + * 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' + ]; } - return input.replace(/\\/g, ""); - } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + /** + * 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(); } - return function (mom) { - var output = ""; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; } - return output; - }; - } - // format date using native date object - function formatMoment(m, format) { + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - if (!m.isValid()) { - return m.lang().invalidDate(); + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); + + return touchList; } - format = expandFormat(format, m.lang()); + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); + /** + * 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 formatFunctions[format](m); - } - - function expandFormat(format, lang) { - var i = 5; + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - function replaceLongDateFormatTokens(input) { - return lang.longDateFormat(input) || input; - } + /** + * 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(); + }, - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - return format; + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; } + }; - /************************************ - Parsing - ************************************/ + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, + /** + * 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; + }, - // 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 getLangDefinition(config._l)._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; + /** + * 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; } - } - - 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; - } + /** + * 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; + } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + var pt = ev.pointerType, + types = {}; - 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 = getLangDefinition(config._l).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); - } + 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]; + }, - 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 = getLangDefinition(config._l).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 = getLangDefinition(config._l).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); - } + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } + }; - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, lang; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - // 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 { - lang = getLangDefinition(config._l); - dow = lang._week.dow; - doy = lang._week.doy; + // data of the current Hammer.gesture detection session + current: null, - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - 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; - } + // when this becomes true, no gestures are fired + stopped: false, + + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + this.stopped = false; - // 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; + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - if (config._d) { + this.detect(eventData); + }, + + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { return; } - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); } + }, this); - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); } - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + return eventData; + }, - 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); - } - } + /** + * 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); - function dateFromObject(config) { - var normalizedInput; + // reset the current + this.current = null; + this.stopped = true; + }, - if (config._d) { - return; + /** + * 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; } - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } - dateFromConfig(config); - } + 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); - 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()]; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; } - } - // date from string and format string - function makeDateFromStringAndFormat(config) { + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - if (config._f === moment.ISO_8601) { - parseISO(config); - 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; + + // 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 + }); + }); } - config._a = []; - config._pf.empty = true; + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var lang = getLangDefinition(config._l), - string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - tokens = expandFormat(config._f, lang).match(formattingTokens) || []; + Utils.extend(ev, { + startEvent: startEv, - 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); - } - } + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + 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) + }); - // 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; + return ev; + }, + + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; } - dateFromConfig(config); - checkOverflow(config); - } + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; + // 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; }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + return this.gestures; } + }; - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore; + /** + * @module hammer + */ - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + /** + * 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; - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = extend({}, config); - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - if (!isValid(tempConfig)) { - continue; - } + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + /** + * 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; + }); - tempConfig._pf.score = currentScore; + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } + + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); } + }); - extend(config, bestMoment || tempConfig); - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + 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; + }, - 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"; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; + + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; + }); + return self; + }, + + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; } - } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } - - function makeDateFromInput(config) { - var input = config._i, - matched = aspNetJsonRegex.exec(input); + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - if (input === undefined) { - config._d = new Date(); - } else if (matched) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = input.slice(0); - dateFromConfig(config); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); + // 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; } - } - 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); + element.dispatchEvent(event); + return this; + }, - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - function parseWeekday(input, language) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = language.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - /************************************ - Relative Time - ************************************/ + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } + this.eventHandlers = []; - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { - return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - function relativeTime(milliseconds, withoutSuffix, lang) { - var seconds = round(Math.abs(milliseconds) / 1000), - minutes = round(seconds / 60), - hours = round(minutes / 60), - days = round(hours / 24), - years = round(days / 365), - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days <= relativeTimeThresholds.dd && ['dd', days] || - days <= relativeTimeThresholds.dm && ['M'] || - days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = milliseconds > 0; - args[4] = lang; - return substituteTimeAgo.apply({}, args); + return null; } + }; - /************************************ - 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; + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + function dragGesture(ev, inst) { + var cur = Detection.current; - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; } - adjustedMoment = moment(mom).add('d', daysToDayOfWeek); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - //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; + 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; + } - 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; + var startCenter = cur.startEvent.center; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } + // 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; - /************************************ - Top Level Functions - ************************************/ + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - function makeMoment(config) { - var input = config._i, - format = config._f; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + // 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; + } + } - if (typeof input === 'string') { - config._i = input = getLangDefinition().preparse(input); - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - if (moment.isMoment(input)) { - config = cloneMoment(input); + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - config._d = new Date(+input._d); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + var isVertical = Utils.isVertical(ev.direction); - return new Moment(config); - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - moment = function (input, format, lang, strict) { - var c; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - if (typeof(lang) === "boolean") { - strict = lang; - lang = undefined; + case EVENT_END: + triggered = false; + break; } - // 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 = lang; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - - return makeMoment(c); - }; + } - moment.suppressDeprecationWarnings = false; + 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, - 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); - }); + /** + * 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, - // 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; - } + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - moment.min = function () { - var args = [].slice.call(arguments, 0); + /** + * 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, - return pickBy('isBefore', args); - }; + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - moment.max = function () { - var args = [].slice.call(arguments, 0); + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - return pickBy('isAfter', args); + /** + * 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'); - // creating with utc - moment.utc = function (input, format, lang, strict) { - var c; + /** + * @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); + } + }; - if (typeof(lang) === "boolean") { - strict = lang; - lang = 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 = lang; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - return makeMoment(c).utc(); - }; + /** + * @param {String} name + */ + (function(name) { + var timer; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - 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]) - }; - } + // set the gesture so we can check in the timeout if it still is + current.name = name; - ret = new Duration(duration); + // 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 (moment.isDuration(input) && input.hasOwnProperty('_lang')) { - ret._lang = input._lang; + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + + case EVENT_RELEASE: + clearTimeout(timer); + break; } + } - return ret; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture }; + })('hold'); - // version number - moment.version = VERSION; + /** + * @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); + } + } + }; - // default format - moment.defaultFormat = isoFormat; + /** + * @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, - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - // 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 () {}; + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function(threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - // This function will load languages and then set the global language. If - // no arguments are passed in, it will simply return the current global - // language key. - moment.lang = function (key, values) { - var r; - if (!key) { - return moment.fn._lang._abbr; - } - if (values) { - loadLang(normalizeLanguage(key), values); - } else if (values === null) { - unloadLang(key); - key = 'en'; - } else if (!languages[key]) { - getLangDefinition(key); - } - r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); - return r._abbr; - }; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - // returns language data - moment.langData = function (key) { - if (key && key._lang && key._lang._abbr) { - key = key._lang._abbr; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } } - return getLangDefinition(key); - }; - - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && obj.hasOwnProperty('_isAMomentObject')); - }; - - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); } + }; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - return m; - }; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - /************************************ - Moment Prototype - ************************************/ + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - extend(moment.fn = Moment.prototype, { + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - clone : function () { - return moment(this); - }, + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, + 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, - unix : function () { - return Math.floor(+this / 1000); - }, + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - toString : function () { - return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - }, + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - 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]'); - } - }, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + /** + * @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, - isValid : function () { - return isValid(this); - }, + /** + * 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; + } - isDSTShifted : function () { + if(inst.options.preventDefault) { + ev.preventDefault(); + } - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - return false; - }, + /** + * @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 + */ - parsingFlags : function () { - return extend({}, this._pf); - }, + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - invalidAt: function () { - return this._pf.overflow; - }, - - utc : function () { - return this.zone(0); - }, + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - local : function () { - this.zone(0); - this._isUTC = false; - return this; - }, + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.lang().postformat(output); - }, + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - add : function (input, val) { - var dur; - // switch args to support add('s', 1) and add(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, 1); - return this; - }, + // 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; + } - subtract : function (input, val) { - var dur; - // switch args to support subtract('s', 1) and subtract(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, -1); - return this; - }, + // we are transforming! + Detection.current.name = name; - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - units = normalizeUnits(units); + inst.trigger(name, ev); // basic transform event - 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. - output += ((this - moment(this).startOf('month')) - - (that - moment(that).startOf('month'))) / diff; - // same as above but with zones, to negate all dst - output -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; - if (units === 'year') { - output = output / 12; + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); } - } 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); - }, - from : function (time, withoutSuffix) { - return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); - }, + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - 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.lang().calendar(format, 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, - isLeapYear : function () { - return isLeapYear(this.year()); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 }, - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + handler: transformGesture + }; + })('transform'); - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.lang()); - return this.add({ d : input - day }); - } else { - return day; - } - }, + /** + * @module hammer + */ - month : makeAccessor('Month', true), + // 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; + } - 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 */ - } + })(window); - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.7.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - return this; - }, + (function (undefined) { - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); - }, + /************************************ + Constants + ************************************/ - isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); - }, + var moment, + VERSION = "2.7.0", + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + i, - isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); - }, - - isSame: function (input, units) { - units = units || 'ms'; - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - }, - - 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; - } - ), + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - // keepTime = true means only change the timezone, without affecting - // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200 - // It is possible that 5:31:26 doesn't exist int zone +0200, so we - // adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepTime) { - var offset = this._offset || 0; - if (input != null) { - if (typeof input === "string") { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - this._offset = input; - this._isUTC = true; - if (offset !== input) { - if (!keepTime || 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._d.getTimezoneOffset(); - } - return this; - }, + // internal storage for language config files + languages = {}, - zoneAbbr : function () { - return this._isUTC ? "UTC" : ""; + // moment internal properties + momentProperties = { + _isAMomentObject: null, + _i : null, + _f : null, + _l : null, + _strict : null, + _tzm : null, + _isUTC : null, + _offset : null, // optional. Combine with _isUTC + _pf : null, + _lang : null // optional }, - zoneName : function () { - return this._isUTC ? "Coordinated Universal Time" : ""; - }, + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); - } - return this; - }, + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } + // 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)$/, - return (this.zone() - input) % 60 === 0; - }, + // 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, - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + // 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}/, - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); - }, + //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 - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + // 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)?)?$/, - weekYear : function (input) { - var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; - return input == null ? year : this.add("y", (input - year)); - }, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add("y", (input - year)); - }, + 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}/] + ], - week : function (input) { - var week = this.lang().week(this); - return input == null ? week : this.add("d", (input - week) * 7); - }, + // 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/] + ], - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add("d", (input - week) * 7); - }, + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - weekday : function (input) { - var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; - return input == null ? weekday : this.add("d", input - weekday); + // 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 }, - 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); + 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' }, - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' }, - weeksInYear : function () { - var weekInfo = this._lang._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + // format function strings + formatFunctions = {}, - get : function (units) { - units = normalizeUnits(units); - return this[units](); + // default relative time thresholds + relativeTimeThresholds = { + s: 45, //seconds to minutes + m: 45, //minutes to hours + h: 22, //hours to days + dd: 25, //days to month (month == 1) + dm: 45, //days to months (months > 1) + dy: 345 //days to year }, - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - return this; - }, + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - // If passed a language key, it will set the language for this - // instance. Otherwise, it will return the language configuration - // variables for this instance. - lang : function (key) { - if (key === undefined) { - return this._lang; - } else { - this._lang = getLangDefinition(key); - return this; - } - } - }); + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.lang().monthsShort(this, format); + }, + MMMM : function (format) { + return this.lang().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.lang().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.lang().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.lang().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.lang().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.lang().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(); + } + }, - function rawMonthSetter(mom, value) { - var dayOfMonth; + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.lang().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + // 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"); } - - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + 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 rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + function deprecate(msg, fn) { + var firstTime = true; + function printMsg() { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn("Deprecation warning: " + msg); + } } + return extend(function () { + if (firstTime) { + printMsg(); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); } - 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); - } + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.lang().ordinal(func.call(this, a), period); }; } - 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; + 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); - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; /************************************ - Duration Prototype + Constructors ************************************/ + function Language() { - extend(moment.duration.fn = Duration.prototype, { + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years; + // Moment prototype object + function Moment(config) { + checkOverflow(config); + extend(this, config); + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // 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; - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + // 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; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + this._data = {}; - hours = absRound(minutes / 60); - data.hours = hours % 24; + this._bubble(); + } - days += absRound(hours / 24); - data.days = days % 30; + /************************************ + Helpers + ************************************/ - months += absRound(days / 30); - data.months = months % 12; - years = absRound(months / 12); - data.years = years; - }, + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; + } + } - weeks : function () { - return absRound(this.days() / 7); - }, + if (b.hasOwnProperty("toString")) { + a.toString = b.toString; + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + if (b.hasOwnProperty("valueOf")) { + a.valueOf = b.valueOf; + } - humanize : function (withSuffix) { - var difference = +this, - output = relativeTime(difference, !withSuffix, this.lang()); + return a; + } - if (withSuffix) { - output = this.lang().pastFuture(difference, output); + function cloneMoment(m) { + var result = {}, i; + for (i in m) { + if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { + result[i] = m[i]; } + } - return this.lang().postformat(output); - }, - - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); - - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + return result; + } - this._bubble(); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - return this; - }, + // 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; - subtract : function (input, val) { - var dur = moment.duration(input, val); + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + // helper function for _.addTime and _.subtractTime + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - this._bubble(); + 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); + } + } - return this; - }, + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - as : function (units) { - units = normalizeUnits(units); - return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); - }, + // 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; + } - lang : moment.fn.lang, + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - 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); + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + for (prop in inputObject) { + if (inputObject.hasOwnProperty(prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } } - - 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' : ''); } - }); - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + return normalizedInput; } - function makeDurationAsGetter(name, factor) { - moment.duration.fn['as' + name] = function () { - return +this / factor; - }; - } + function makeList(field) { + var count, setter; - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationAsGetter(i, unitMillisecondFactors[i]); - makeDurationGetter(i.toLowerCase()); + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; } - } - - makeDurationAsGetter('Weeks', 6048e5); - moment.duration.fn.asMonths = function () { - return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; - }; + moment[field] = function (format, index) { + var i, getter, + method = moment.fn._lang[field], + results = []; - /************************************ - Default Lang - ************************************/ + if (typeof format === 'number') { + index = format; + format = undefined; + } + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment.fn._lang, m, format || ''); + }; - // Set default language, other languages will inherit from English. - moment.lang('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 (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } } - }); - /* EMBED_LANGUAGES */ + return value; + } - /************************************ - Exposing Moment - ************************************/ + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - 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; - } + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; } - // 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; + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 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 (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; } - return moment; - }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); + m._pf.overflow = overflow; + } } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(61)(module))) -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { + 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; - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } + } + return m._isValid; + } - (function(window, undefined) { - 'use strict'; + function normalizeLanguage(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + // 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(); + } - /** - * 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 || {}); - }; + /************************************ + Languages + ************************************/ - /** - * 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 = { - /** - * 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', + extend(Language.prototype, { - /** - * 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', + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, - /** - * 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', + _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + months : function (m) { + return this._months[m.month()]; + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - /** - * 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', + monthsParse : function (monthName) { + var i, mom, regex; - /** - * 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 (!this._monthsParse) { + this._monthsParse = []; + } - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + 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; + } + } + }, - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - /** - * 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; + weekdaysParse : function (weekdayName) { + var i, mom, regex; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + for (i = 0; i < 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; + } + } + }, - /** - * 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'; + _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; + }, - /** - * 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'; + 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'); + }, - /** - * 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'; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + _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; + }, - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + _relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + ordinal : function (number) { + return this._ordinal.replace("%d", number); + }, + _ordinal : "%d", - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; - } + preparse : function (string) { + return string; + }, - // find what eventtypes we add listeners to - Event.determineEventTypes(); + postformat : function (string) { + return string; + }, - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + _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. + }, - // Hammer is ready...! - Hammer.READY = true; - } + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; + // Loads a language definition into the `languages` cache. The function + // takes a key and optionally values. If not in the browser and no values + // are provided, it will load the language file module. As a convenience, + // this function also returns the language values. + function loadLang(key, values) { + values.abbr = key; + if (!languages[key]) { + languages[key] = new Language(); } - return dest; - }, + languages[key].set(values); + return languages[key]; + } - /** - * 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); - }, + // Remove a language from the `languages` cache. Mostly useful in tests. + function unloadLang(key) { + delete languages[key]; + } - /** - * 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); - }, + // Determines which language definition to use and returns it. + // + // With no parameters, it will return the global language. If you + // pass in a language key, such as 'en', it will return the + // definition for 'en', so long as 'en' has already been loaded using + // moment.lang. + function getLangDefinition(key) { + var i = 0, j, lang, next, split, + get = function (k) { + if (!languages[k] && hasModule) { + try { + __webpack_require__(57)("./" + k); + } catch (e) { } + } + return languages[k]; + }; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + if (!key) { + return moment.fn._lang; + } - // 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 (!isArray(key)) { + //short-circuit everything else + lang = get(key); + if (lang) { + return lang; } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; + key = [key]; + } + + //pick the language from the array + //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + while (i < key.length) { + split = normalizeLanguage(key[i]).split('-'); + j = split.length; + next = normalizeLanguage(key[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + lang = get(split.slice(0, j).join('-')); + if (lang) { + return lang; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; } + j--; } + i++; } - }, + return moment.fn._lang; + } - /** - * 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; - }, + /************************************ + Formatting + ************************************/ - /** - * 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; + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ""); } - }, + return input.replace(/\\/g, ""); + } - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - /** - * 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; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); } - node = node.parentNode; } - return false; - }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + 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; + }; + } - // 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 - }; + // format date using native date object + function formatMoment(m, format) { + + if (!m.isValid()) { + return m.lang().invalidDate(); } - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + format = expandFormat(format, m.lang()); - 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 - }; - }, - - /** - * 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 - }; - }, + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - /** - * 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; + return formatFunctions[format](m); + } - return Math.atan2(y, x) * 180 / Math.PI; - }, + function expandFormat(format, lang) { + var i = 5; - /** - * 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); + function replaceLongDateFormatTokens(input) { + return lang.longDateFormat(input) || input; + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + return format; + } - return Math.sqrt((x * x) + (y * y)); - }, - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + /************************************ + Parsing + ************************************/ - /** - * 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]); + + // 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 getLangDefinition(config._l)._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; } - return 0; - }, + } - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + 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]); - /** - * 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); + return parts[0] === '+' ? -minutes : minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = getLangDefinition(config._l).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); + } + + 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 = getLangDefinition(config._l).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 = getLangDefinition(config._l).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); + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, lang; - 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); - } + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + // 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 { + lang = getLangDefinition(config._l); + dow = lang._week.dow; + doy = lang._week.doy; + + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; } } - }, + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - /** - * 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) { + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { return; } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); - - var falseFn = toggle && function() { - return false; - }; + currentDate = currentDateArray(config); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - }, - /** - * 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(); - }); - } - }; + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - /** - * @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, + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + // 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]; + } - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // 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]; + } - /** - * 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); - }); - }, + 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); + } + } - /** - * 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); - }); - }, + function dateFromObject(config) { + var normalizedInput; - /** - * 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; + if (config._d) { + return; + } - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - // 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; + dateFromConfig(config); + } - // 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; - } + 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()]; + } + } + + // date from string and format string + function makeDateFromStringAndFormat(config) { + + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + config._a = []; + config._pf.empty = true; - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var lang = getLangDefinition(config._l), + string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - // ...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 - } + tokens = expandFormat(config._f, lang).match(formattingTokens) || []; - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); + 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); + } + } - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - /** - * 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; + // 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; + } - // 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; + dateFromConfig(config); + checkOverflow(config); + } - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - // 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; - } + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // detection has been started, we keep track of this, see above - this.started = true; + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + scoreToBeat, + i, + currentScore; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = extend({}, config); + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - handler.call(Detection, evData); + if (!isValid(tempConfig)) { + continue; + } - evData.eventType = triggerType; - delete evData.changedLength; - } + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } - return triggerType; - }, + extend(config, bestMoment || tempConfig); + } - /** - * 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' - ]; + // 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; + } } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; + 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 { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + config._isValid = false; + } + } + + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } + + function makeDateFromInput(config) { + var input = config._i, + matched = aspNetJsonRegex.exec(input); + + if (input === undefined) { + config._d = new Date(); + } else if (matched) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromConfig(config); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); } + } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + 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); - /** - * 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(); + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); } + return date; + } - // 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 = []; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); + function parseWeekday(input, language) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = language.weekdaysParse(input); + if (typeof input !== 'number') { + return null; } - identifiers.push(touch.identifier); - }); - - return touchList; + } } + return input; + } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + /************************************ + Relative Time + ************************************/ - /** - * 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, + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { + return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - /** - * 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(); - }, + function relativeTime(milliseconds, withoutSuffix, lang) { + var seconds = round(Math.abs(milliseconds) / 1000), + minutes = round(seconds / 60), + hours = round(minutes / 60), + days = round(hours / 24), + years = round(days / 365), + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days <= relativeTimeThresholds.dd && ['dd', days] || + days <= relativeTimeThresholds.dm && ['M'] || + days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = milliseconds > 0; + args[4] = lang; + return substituteTimeAgo.apply({}, args); + } - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + /************************************ + Week of Year + ************************************/ - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + // 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; - /** - * 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; - }, - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - }, - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - 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 = {}; + adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; } - }; + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + 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; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - // data of the current Hammer.gesture detection session - current: null, + /************************************ + Top Level Functions + ************************************/ - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + function makeMoment(config) { + var input = config._i, + format = config._f; - // when this becomes true, no gestures are fired - stopped: false, + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - /** - * 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; + if (typeof input === 'string') { + config._i = input = getLangDefinition().preparse(input); } - this.stopped = false; + if (moment.isMoment(input)) { + config = cloneMoment(input); - // 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 - }; + config._d = new Date(+input._d); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - this.detect(eventData); - }, + return new Moment(config); + } - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + moment = function (input, format, lang, strict) { + var c; + + if (typeof(lang) === "boolean") { + strict = lang; + lang = 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 = lang; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + return makeMoment(c); + }; - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + moment.suppressDeprecationWarnings = false; - // 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); + 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); + }); - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + // 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(eventData.eventType == EVENT_END) { - this.stopDetect(); + 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; + } - return eventData; - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * 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); + return pickBy('isBefore', args); + }; - // reset the current - this.current = null; - this.stopped = true; - }, + moment.max = function () { + var args = [].slice.call(arguments, 0); - /** - * 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; + return pickBy('isAfter', args); + }; - 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; - } + // creating with utc + moment.utc = function (input, format, lang, strict) { + var c; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + if (typeof(lang) === "boolean") { + strict = lang; + lang = 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 = lang; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - 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); + return makeMoment(c).utc(); + }; - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso; + + 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]) + }; } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, - - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + ret = new Duration(duration); - // 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 - }); - }); + if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { + ret._lang = input._lang; } - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + return ret; + }; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + // version number + moment.version = VERSION; - Utils.extend(ev, { - startEvent: startEv, + // default format + moment.defaultFormat = isoFormat; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - 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) - }); + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - return ev; - }, + // 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 () {}; - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function(threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + // This function will load languages and then set the global language. If + // no arguments are passed in, it will simply return the current global + // language key. + moment.lang = function (key, values) { + var r; + if (!key) { + return moment.fn._lang._abbr; + } + if (values) { + loadLang(normalizeLanguage(key), values); + } else if (values === null) { + unloadLang(key); + key = 'en'; + } else if (!languages[key]) { + getLangDefinition(key); + } + r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); + return r._abbr; + }; - // set its index - gesture.index = gesture.index || 1000; + // returns language data + moment.langData = function (key) { + if (key && key._lang && key._lang._abbr) { + key = key._lang._abbr; + } + return getLangDefinition(key); + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); + }; - // 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; - }); + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - return this.gestures; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - }; + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - /** - * @module hammer - */ - - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; - - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + return m; + }; - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - /** - * 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; - }); + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + /************************************ + Moment Prototype + ************************************/ - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + extend(moment.fn = Moment.prototype, { - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + clone : function () { + return moment(this); + }, - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + unix : function () { + return Math.floor(+this / 1000); + }, - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); + toString : function () { + return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + 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]'); } - }); - return self; - }, + }, - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + isValid : function () { + return isValid(this); + }, - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + isDSTShifted : function () { - element.dispatchEvent(event); - return this; - }, + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + return false; + }, - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + parsingFlags : function () { + return extend({}, this._pf); + }, - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + invalidAt: function () { + return this._pf.overflow; + }, - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + utc : function () { + return this.zone(0); + }, - this.eventHandlers = []; + local : function () { + this.zone(0); + this._isUTC = false; + return this; + }, - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.lang().postformat(output); + }, - return null; - } - }; + add : function (input, val) { + var dur; + // switch args to support add('s', 1) and add(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, 1); + return this; + }, + subtract : function (input, val) { + var dur; + // switch args to support subtract('s', 1) and subtract(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, -1); + return this; + }, - /** - * @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 - */ + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + units = normalizeUnits(units); - function dragGesture(ev, inst) { - var cur = Detection.current; + 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. + output += ((this - moment(this).startOf('month')) - + (that - moment(that).startOf('month'))) / diff; + // same as above but with zones, to negate all dst + output -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4 / 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); + }, - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + from : function (time, withoutSuffix) { + return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); + }, - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - 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; - } + 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.lang().calendar(format, this)); + }, - var startCenter = cur.startEvent.center; + isLeapYear : function () { + return isLeapYear(this.year()); + }, - // 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; + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.lang()); + return this.add({ d : input - day }); + } else { + return day; + } + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + month : makeAccessor('Month', true), - // 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; - } - } + 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 */ + } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - var isVertical = Utils.isVertical(ev.direction); + return this; + }, - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); + }, - case EVENT_END: - triggered = false; - break; - } - } + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, - 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, + isSame: function (input, units) { + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + }, - /** - * 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, + 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; + } + ), - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + 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; + } + ), - /** - * 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, + // keepTime = true means only change the timezone, without affecting + // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200 + // It is possible that 5:31:26 doesn't exist int zone +0200, so we + // adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepTime) { + var offset = this._offset || 0; + if (input != null) { + if (typeof input === "string") { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + this._offset = input; + this._isUTC = true; + if (offset !== input) { + if (!keepTime || 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._d.getTimezoneOffset(); + } + return this; + }, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + zoneAbbr : function () { + return this._isUTC ? "UTC" : ""; + }, - /** - * 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, + zoneName : function () { + return this._isUTC ? "Coordinated Universal Time" : ""; + }, - /** - * 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'); + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, - /** - * @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); - } - }; + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + return (this.zone() - input) % 60 === 0; + }, - /** - * @param {String} name - */ - (function(name) { - var timer; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + }, - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - // set the gesture so we can check in the timeout if it still is - current.name = name; + weekYear : function (input) { + var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; + return input == null ? year : this.add("y", (input - year)); + }, - // 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; + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add("y", (input - year)); + }, - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + week : function (input) { + var week = this.lang().week(this); + return input == null ? week : this.add("d", (input - week) * 7); + }, - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add("d", (input - week) * 7); + }, - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + weekday : function (input) { + var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; + return input == null ? weekday : this.add("d", input - weekday); + }, - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 + 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); }, - handler: holdGesture - }; - })('hold'); - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } - }; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * @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, + weeksInYear : function () { + var weekInfo = this._lang._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + // If passed a language key, it will set the language for this + // instance. Otherwise, it will return the language configuration + // variables for this instance. + lang : function (key) { + if (key === undefined) { + return this._lang; + } else { + this._lang = getLangDefinition(key); + return this; + } + } + }); - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + function rawMonthSetter(mom, value) { + var dayOfMonth; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.lang().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; } + } - // 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); - } + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } - }; - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + 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); + } + }; + } - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + 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)); - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + // 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; - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + /************************************ + Duration Prototype + ************************************/ - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + extend(moment.duration.fn = Duration.prototype, { - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years; - 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, + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + hours = absRound(minutes / 60); + data.hours = hours % 24; - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + days += absRound(hours / 24); + data.days = days % 30; - /** - * @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, + months += absRound(days / 30); + data.months = months % 12; - /** - * 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; - } + years = absRound(months / 12); + data.years = years; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var difference = +this, + output = relativeTime(difference, !withSuffix, this.lang()); + + if (withSuffix) { + output = this.lang().pastFuture(difference, output); + } - if(inst.options.preventDefault) { - ev.preventDefault(); - } + return this.lang().postformat(output); + }, - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - /** - * @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 - */ + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + this._bubble(); - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return this; + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + subtract : function (input, val) { + var dur = moment.duration(input, val); - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - // 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; - } + this._bubble(); - // we are transforming! - Detection.current.name = name; + return this; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - inst.trigger(name, ev); // basic transform event + as : function (units) { + units = normalizeUnits(units); + return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); + }, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + lang : moment.fn.lang, - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + 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); - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); } + }); + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; } - 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, + function makeDurationAsGetter(name, factor) { + moment.duration.fn['as' + name] = function () { + return +this / factor; + }; + } - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationAsGetter(i, unitMillisecondFactors[i]); + makeDurationGetter(i.toLowerCase()); + } + } - handler: transformGesture + makeDurationAsGetter('Weeks', 6048e5); + moment.duration.fn.asMonths = function () { + return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; }; - })('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; - } + /************************************ + Default Lang + ************************************/ - })(window); + + // Set default language, other languages will inherit from English. + moment.lang('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; + } + }); + + /* EMBED_LANGUAGES */ + + /************************************ + Exposing Moment + ************************************/ + + 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; + } + } + + // 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; + } + + 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__(61)(module))) /***/ }, /* 50 */ diff --git a/dist/vis.map b/dist/vis.map index 2a512263..18f5428c 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","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","coreProp","Core","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","_initAutoResize","component","newDataSet","initialLoad","fit","setWindow","setGroups","groups","setSelection","getSelection","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","minimumStep","containerHeight","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","parent","backgroundVertical","title","currentTimeTimer","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","time","getCustomTime","dragging","stopPropagation","svg","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","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","visibility","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_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","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","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","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","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","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","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","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","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","eventType","getTouchList","collectEventData","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","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","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_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","unbind","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","deprecate","msg","printMsg","suppressDeprecationWarnings","warn","firstTime","padToken","func","leftZeroFill","ordinalizeToken","period","lang","ordinal","Language","Moment","config","checkOverflow","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_bubble","cloneMoment","momentProperties","absRound","number","targetLength","forceSign","output","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","_d","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","_lang","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","_pf","DATE","_overflowDayOfYear","isValid","_isValid","getTime","_strict","normalizeLanguage","makeAs","model","_isUTC","zone","_offset","local","loadLang","abbr","languages","unloadLang","getLangDefinition","k","hasModule","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_l","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","_tzm","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","_i","getUTCFullYear","makeDateFromStringAndFormat","_f","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","language","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","relativeTimeThresholds","dd","dm","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","res","dayOfMonth","unit","makeAccessor","keepTime","makeDurationGetter","makeDurationAsGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","_isAMomentObject","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","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","val","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","_abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","inputString","dur","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isAfter","isBefore","isSame","getTimezoneOffset","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","difference","toIsoString","asSeconds","asMonths","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocity","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","_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","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","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","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","webpackContextResolve","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","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","coreProp","Core","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","_initAutoResize","component","newDataSet","initialLoad","fit","setWindow","setGroups","groups","setSelection","getSelection","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","minimumStep","containerHeight","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","parent","backgroundVertical","title","currentTimeTimer","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","time","getCustomTime","dragging","stopPropagation","svg","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","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","visibility","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_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","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","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","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","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","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","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","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","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_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","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","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_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","unbind","trigger","__WEBPACK_AMD_DEFINE_RESULT__","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocity","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","global","dfl","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","deprecate","msg","printMsg","suppressDeprecationWarnings","warn","firstTime","padToken","func","leftZeroFill","ordinalizeToken","period","lang","ordinal","Language","Moment","config","checkOverflow","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_bubble","cloneMoment","momentProperties","absRound","number","targetLength","forceSign","output","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","_d","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","_lang","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","_pf","DATE","_overflowDayOfYear","isValid","_isValid","getTime","_strict","normalizeLanguage","makeAs","model","_isUTC","zone","_offset","local","loadLang","abbr","languages","unloadLang","getLangDefinition","k","hasModule","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_l","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","_tzm","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","_i","getUTCFullYear","makeDateFromStringAndFormat","_f","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","language","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","relativeTimeThresholds","dd","dm","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","res","dayOfMonth","unit","makeAccessor","keepTime","makeDurationGetter","makeDurationAsGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","_isAMomentObject","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","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","val","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","_abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","inputString","dur","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isAfter","isBefore","isSame","getTimezoneOffset","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","difference","toIsoString","asSeconds","asMonths","require","noGlobal","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","_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","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","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","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","webpackContextResolve","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.js b/dist/vis.min.js index c122029d..77a2d72b 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -24,14 +24,14 @@ */ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38),gephiParser:i(39)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41)},function(module,exports,__webpack_require__){var moment=__webpack_require__(40);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,g=u,m=Math.floor(.5*(u+p));if(0==u)m=-1;else if(1==u)r=l[m][i],m=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,m-1)][i],r=l[m][i],a=l[Math.min(l.length-1,m+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(m=Math.max(0,m-1)):e>r&&a>e&&(m=Math.min(l.length-1,m+1)))):(e>r?f=Math.floor(.5*(u+p)):g=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==g?(m=-1,c=!0):(u=g,p=f,m=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return m}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var f=h[p];c[f]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},f=0,g=l.length;g>f;f++){var m=l[f];u[m]=t.getValue(c,f)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,f=i&&i.filter,g=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&g.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&g.push(d));if(i&&i.order&&void 0==t&&this._sort(g,i.order),i&&i.fields){var m=i.fields;if(void 0!=t)d=this._filterFields(d,m);else for(c=0,p=g.length;p>c;c++)g[c]=this._filterFields(g[c],m)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(g[c]);return s}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(46),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var g=(t-p)/(f-p),m=240*g,v=this._hsv2rgb(m,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(x,r,this.zMin)),Math.cos(2*_)>0?(m.textAlign="center",m.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(m.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(m.textAlign="center",m.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(m.lineWidth=1,s=void 0===this.defaultZStep,i=new u(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(n,r,i.getCurrent())),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(t.x-b,t.y),m.stroke(),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.colorAxis,m.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();m.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),m.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(p.x,p.y),m.lineTo(f.x,f.y),m.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(p.x,p.y),m.lineTo(f.x,f.y),m.stroke(),m.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)>0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*_)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)<0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*_)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new h(n,r,a)),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.colorAxis,m.fillText(M,o.x-d,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,d,l,c,p,u,f,g=this.frame.canvas,m=g.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,m.lineWidth=l,m.fillStyle=a,m.strokeStyle=d,m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.lineTo(o.screen.x,o.screen.y),m.lineTo(i.screen.x,i.screen.y),m.closePath(),m.fill(),m.stroke()}}else for(n=0;np&&(p=0);var u,f,g;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,g=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=g,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],g=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,g))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i){for(var n in h.prototype)h.prototype.hasOwnProperty(n)&&!s.prototype.hasOwnProperty(n)&&(s.prototype[n]=h.prototype[n]);if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var r=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)},util:{snap:null,toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},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,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=(i(46),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},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,n){for(var r in h.prototype)h.prototype.hasOwnProperty(r)&&!s.prototype.hasOwnProperty(r)&&(s.prototype[r]=h.prototype[r]);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)},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.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),n&&this.setGroups(n),e?this.setItems(e):this.redraw()}var o=(i(46),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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:!1},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("x");e=s?o.convert(s.x,"Date").valueOf():null;var n=t.max("x");n&&(i=o.convert(n.x,"Date").valueOf())}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},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.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=t,this._end=e,t==e&&(this._start=t-.75,this._end=e+1),this.autoScale&&this.setMinimumStep(i,s,o),this.setFirst()},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.1*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.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),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(){for(var t=""+Number(this.current).toPrecision(5),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("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,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.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(42),h=i(40),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},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){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),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.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)}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},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,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},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(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&&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){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){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)}var o=i(40);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(){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},this.options=o.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var o=i(1),n=i(18);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"],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,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}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)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(41),n=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime"],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);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),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){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},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1) -},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];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&&(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&&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.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),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),i.next(),l++}this.conversionFactor=d/((o-1)*i.step);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._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var g=this.visibleItems[u];g.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;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},g=0,m=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,g+=t.height}),g=Math.max(g,m),this.stackDirty=!1,a.style.height=i(g),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=g,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=this.body.domProps.border.left+"px",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[u];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[u];if(this.groupsData)t&&(t.hide(),delete this.groups[u]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[u]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==u)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:u,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:u,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:u,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){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.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&1==this.groups[e].visible&&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()); +},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){for(var n in h.prototype)h.prototype.hasOwnProperty(n)&&!s.prototype.hasOwnProperty(n)&&(s.prototype[n]=h.prototype[n]);if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var r=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)},util:{snap:null,toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},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,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=(i(46),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(42),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},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,n){for(var r in h.prototype)h.prototype.hasOwnProperty(r)&&!s.prototype.hasOwnProperty(r)&&(s.prototype[r]=h.prototype[r]);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)},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.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),n&&this.setGroups(n),e?this.setItems(e):this.redraw()}var o=(i(46),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(42),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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:!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){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.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=t,this._end=e,t==e&&(this._start=t-.75,this._end=e+1),this.autoScale&&this.setMinimumStep(i,s,o),this.setFirst()},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.1*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.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),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(){for(var t=""+Number(this.current).toPrecision(5),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("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,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.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(43),h=i(40),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},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){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),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.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)}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},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,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},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(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&&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){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){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)}var o=i(40);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(){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},this.options=o.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var o=i(1),n=i(18);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"],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,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}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)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(41),n=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime"],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);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),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){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},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1 +},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];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&&(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&&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.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),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),i.next(),l++}this.conversionFactor=d/((o-1)*i.step);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._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var g=this.visibleItems[u];g.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;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},g=0,m=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,g+=t.height}),g=Math.max(g,m),this.stackDirty=!1,a.style.height=i(g),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=g,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=this.body.domProps.border.left+"px",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[u];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[u];if(this.groupsData)t&&(t.hide(),delete this.groups[u]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[u]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==u)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:u,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:u,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:u,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){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.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&1==this.groups[e].visible&&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&&(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&&(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,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},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};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("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];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){for(s=0;su){e.push(m);break}e.push(m)}}else for(var g=0;gp&&m.x0?(i=this._preprocessData(e,t),h.push({min:i.min,max:i.max}),r.push(i.data)):(h.push({}),r.push([]))}else h.push({}),r.push([]);if(d=this._updateYAxis(l,h),1==d)return n.cleanupElements(this.svgElements),void this.body.emitter.emit("change");for(s=0;s0){for(var p=0;pi?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,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._drawBarGraph=function(t,e){if(null!=t&&t.length>0){var i,s=.1*e.options.barChart.width,o=0,r=e.options.barChart.width;"left"==e.options.barChart.align?o-=.5*r:"right"==e.options.barChart.align&&(o+=.5*r);for(var a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),r>i&&(r=s>i?s:i),n.drawBar(t[a].x+o,t[a].y,r,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg);1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg,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;rp;p+=r)i=n(t[p].x)+this.width-1,s=t[p].y,o.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:o}},s.prototype._convertYvalues=function(t,e){var i,s,o=[],n=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(n=this.yAxisRight);for(var a=0;al;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,g,m,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),m=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*m*v+b,f=3*x*(x+v),f>0&&(f=1/f),g=3*m*(m+v),g>0&&(g=1/g),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)*g,y:(y*o.y+u*n.y-b*r.y)*g},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),g=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>g)&&this._repaintMajorText(0,f,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(41);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,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)},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(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=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",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.width="100%",this.height="100%",this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.stabilize=!0,this.selectable=!0,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.constants={nodes:{radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",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},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"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilizationIterations:1e3,labels:{add:"Add Node",edit:"Edit",link:"Add Link",del:"Delete selected",editNode:"Edit Node",editEdge:"Edit Edge",back:"Back",addDescription:"Click in an empty space to place a new node.",linkDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",addError:"The function for add does not support two arguments (data,callback).",linkError:"The function for connect does not support two arguments (data,callback).",editError:"The function for edit does not support two arguments (data, callback).",editBoundError:"No edit function has been bound to this button.",deleteError:"The function for delete does not support two arguments (data, callback).",deleteClusterError:"Clusters cannot be deleted."},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},this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1; -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.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.stabilize&&this.zoomExtent(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(46),n=i(41),r=i(47),a=i(1),h=i(42),d=i(3),l=i(4),c=i(38),p=i(39),u=i(34),f=i(35),g=i(36),m=i(33),v=i(37),y=i(45);i(44),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/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},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),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);if(this._putDataInSector(),!e)if(this.stabilize){var o=this;setTimeout(function(){o._stabilize(),o.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[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),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(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(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);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.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength))}if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=a.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}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))}}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.width,this.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="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(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof g&&r.id!=a||r instanceof m||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){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,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new g(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,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new g(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new m(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},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 m(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.width,this.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);o>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(o),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||1==this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_discreteStepNodes"),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},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),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);if(this._putDataInSector(),!e)if(this.stabilize){var o=this;setTimeout(function(){o._stabilize(),o.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[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),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(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(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);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.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength))}if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=a.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}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))}}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.width,this.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="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(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof g&&r.id!=a||r instanceof m||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){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,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new g(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,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new g(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new m(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},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 m(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.width,this.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);o>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(o),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||1==this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_discreteStepNodes"),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}return!1},s.prototype._getColor=function(){var t=this.color;return"to"==this.inheritColor?t={highlight:this.to.color.highlight.border,hover:this.to.color.hover.border,color:this.to.color.border}:("from"==this.inheritColor||1==this.inheritColor)&&(t={highlight:this.from.color.highlight.border,hover:this.from.color.hover.border,color:this.from.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.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.length/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.min(this.widthSelected,this.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.hoverWidth,this.widthMax)*this.networkScaleInv:this.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.smoothCurves.roundness,s=this.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.yl.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.width)*this.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.color.highlight,t.fillStyle=this.color.highlight):1==this.hover?(t.strokeStyle=this.color.hover,t.fillStyle=this.color.hover):(t.strokeStyle=this.color.color,t.fillStyle=this.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?s=this.via:1==this.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.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.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.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.width)*this.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var g;if(1==this.smoothCurves.enabled&&null!=s){var m=.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));g={x:m,y:v}}else g=this._pointOnLine(.5);this._label(t,this.label,g.x,g.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.length);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.width)*this.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(g=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,g.x,g.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.smoothCurves.enabled){var r,a;if(1==this.smoothCurves.enabled&&1==this.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,f,g,m=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(f,g,p,u,o,n),m=m>d?d:m),f=p,g=u;return m}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=this.length/4,_=this.from;return _.width||_.resize(ctx),_.width>_.height?(p=_.x+_.width/2,u=_.y-b):(p=_.x+b,u=_.y-_.height/2),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&(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.smoothCurves.dynamic&&1==this.smoothCurves.enabled?e=this.via:1==this.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.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.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){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},t.exports=e},function(t,e,i){function s(t,e,i,s){this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.group=s.nodes.group,this.fontSize=Number(s.nodes.fontSize),this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.fontDrawThreshold=3,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.radius=s.nodes.radius,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.level=-1,this.preassignedLevel=!1,this.borderWidth=s.nodes.borderWidth,this.borderWidthSelected=s.nodes.borderWidthSelected,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=s.physics.damping,this.mass=1,this.fixedData={x:null,y:null},this.setProperties(t,s),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){if(this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.group&&(this.group=t.group),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.borderWidth&&(this.borderWidth=t.borderWidth),void 0!==t.borderWidthSelected&&(this.borderWidthSelected=t.borderWidthSelected),void 0!==t.mass&&(this.mass=t.mass),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(void 0!==this.group&&""!=this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!==t.shape&&(this.shape=t.shape),void 0!==t.image&&(this.image=t.image),void 0!==t.radius&&(this.radius=t.radius,this.baseRadiusValue=this.radius),void 0!==t.color&&(this.color=o.parseColor(t.color)),void 0!==t.fontColor&&(this.fontColor=t.fontColor),void 0!==t.fontSize&&(this.fontSize=t.fontSize),void 0!==t.fontFace&&(this.fontFace=t.fontFace),void 0!==this.image&&""!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.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.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.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){return Math.abs(this.vx)>t||Math.abs(this.vy)>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.radius=(this.radiusMin+this.radiusMax)/2;else{var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}this.baseRadiusValue=this.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.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.radius||this.imageObj.width,e=this.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.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.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.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.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.color.highlight.background:this.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.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.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.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.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.color.highlight.background:this.hover?this.color.hover.background:this.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.radius=s/2,this.width=s,this.height=s,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.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.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.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.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.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.circle(this.x,this.y,this.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.color.highlight.background:this.hover?this.color.hover.background:this.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.radius=this.baseRadiusValue;var t=2*this.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.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.borderWidth,o=this.borderWidthSelected||2*this.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.color.highlight.border:this.hover?this.color.hover.border:this.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.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.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t[e](this.x,this.y,this.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.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&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.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(N=C.NULL,O="";" "==L||" "==L||"\n"==L||"\r"==L;)o();do{var t=!1;if("#"==L){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=L&&"\n"!=L;)o();t=!0}}if("/"==L&&"/"==n()){for(;""!=L&&"\n"!=L;)o();t=!0}if("/"==L&&"*"==n()){for(;""!=L;){if("*"==L&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==L||" "==L||"\n"==L||"\r"==L;)o()}while(t);if(""==L)return void(N=C.DELIMITER);var i=L+n();if(D[i])return N=C.DELIMITER,O=i,o(),void o();if(D[L])return N=C.DELIMITER,O=L,void o();if(r(L)||"-"==L){for(O+=L,o();r(L);)O+=L,o();return"false"==O?O=!1:"true"==O?O=!0:isNaN(Number(O))||(O=Number(O)),void(N=C.IDENTIFIER)}if('"'==L){for(o();""!=L&&('"'!=L||'"'==L&&'"'==n());)O+=L,'"'==L&&o(),o();if('"'!=L)throw x('End of string " expected');return o(),void(N=C.IDENTIFIER)}for(N=C.UNKNOWN;""!=L;)O+=L,o();throw new SyntaxError('Syntax error in part "'+w(O,30)+'"')}function u(){var t={};if(s(),p(),"strict"==O&&(t.strict=!0,p()),("graph"==O||"digraph"==O)&&(t.type=O,p()),N==C.IDENTIFIER&&(t.id=O,p()),"{"!=O)throw x("Angle bracket { expected");if(p(),f(t),"}"!=O)throw x("Angle bracket } expected");if(p(),""!==O)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==O&&"}"!=O;)g(t),";"==O&&p()}function g(t){var e=m(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=C.IDENTIFIER)throw x("Identifier expected");var s=O;if(p(),"="==O){if(p(),N!=C.IDENTIFIER)throw x("Identifier expected");t[s]=O,p()}else y(t,s)}}function m(t){var e=null;if("subgraph"==O&&(e={},e.type="subgraph",p(),N==C.IDENTIFIER&&(e.id=O,p())),"{"==O){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=O)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"==O?(p(),t.node=_(),"node"):"edge"==O?(p(),t.edge=_(),"edge"):"graph"==O?(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(;"->"==O||"--"==O;){var i,s=O;p();var o=m(t);if(o)i=o;else{if(N!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=O,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==O;){for(p(),t={};""!==O&&"]"!=O;){if(N!=C.IDENTIFIER)throw x("Attribute name expected");var e=O;if(p(),"="!=O)throw x("Equal sign = expected");if(p(),N!=C.IDENTIFIER)throw x("Attribute value expected");var i=O;h(t,e,i),p(),","==O&&p()}if("]"!=O)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(O,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},D={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,L="",O="",N=C.NULL,k=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},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){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,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),g=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,g,p,g),this.bezierCurveTo(p-h,g,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(56),o=i(50),n=i(51),r=i(52),a=i(53),h=i(54),d=i(55);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.containerElement.insertBefore(this.manipulationDiv,this.frame)),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.containerElement.insertBefore(this.editModeDiv,this.frame)),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.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in D)t[e]?i=!0:D[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function g(t,e,s,o){D[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++D[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return g(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},D={},E=!1,T=!1,L=1;20>L;++L)_[111+L]="f"+L;for(L=0;9>=L;++L)_[L+96]=L;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var O={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=O},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(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t,e){function i(){ve.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}var s=!0;return f(function(){return s&&(i(),s=!1),e.apply(this,arguments)},e)}function d(t,e){return function(i){return v(t.call(this,i),e)}}function l(t,e){return function(i){return this.lang().ordinal(t.call(this,i),e)}}function c(){}function p(t){O(t),f(this,t)}function u(t){var e=S(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._bubble()}function f(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function g(t){var e,i={};for(e in t)t.hasOwnProperty(e)&&Ne.hasOwnProperty(e)&&(i[e]=t[e]);return i}function m(t){return 0>t?Math.ceil(t):Math.floor(t)}function v(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&C(t[s])!==C(e[s]))&&r++;return r+n}function w(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ri[t]||ai[e]||e}return t}function S(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=w(i),e&&(s[e]=t[i]));return s}function M(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}ve[t]=function(s,o){var r,a,h=ve.fn._lang[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=ve().utc().set(i,t);return h.call(ve.fn._lang,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function C(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function D(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function E(t,e,i){return re(ve([t,11,31+e-i]),e,i).week}function T(t){return L(t)?366:365}function L(t){return t%4===0&&t%100!==0||t%400===0}function O(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Me]<0||t._a[Me]>11?Me:t._a[Ce]<1||t._a[Ce]>D(t._a[Se],t._a[Me])?Ce:t._a[De]<0||t._a[De]>23?De:t._a[Ee]<0||t._a[Ee]>59?Ee:t._a[Te]<0||t._a[Te]>59?Te:t._a[Le]<0||t._a[Le]>999?Le:-1,t._pf._overflowDayOfYear&&(Se>e||e>Ce)&&(e=Ce),t._pf.overflow=e)}function N(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 k(t){return t?t.toLowerCase().replace("_","-"):t}function I(t,e){return e._isUTC?ve(t).zone(e._offset||0):ve(t).local()}function A(t,e){return e.abbr=t,Oe[t]||(Oe[t]=new c),Oe[t].set(e),Oe[t]}function z(t){delete Oe[t]}function P(t){var e,s,o,n,r=0,a=function(t){if(!Oe[t]&&ke)try{i(57)("./"+t)}catch(e){}return Oe[t]};if(!t)return ve.fn._lang;if(!b(t)){if(s=a(t))return s;t=[t]}for(;r0;){if(s=a(n.slice(0,e).join("-")))return s;if(o&&o.length>=e&&x(n,o,!0)>=e-1)break;e--}r++}return ve.fn._lang}function F(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function R(t){var e,i,s=t.match(Pe);for(e=0,i=s.length;i>e;e++)s[e]=pi[s[e]]?pi[s[e]]:F(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 H(t,e){return t.isValid()?(e=Y(e,t.lang()),hi[e]||(hi[e]=R(e)),hi[e](t)):t.lang().invalidDate()}function Y(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Fe.lastIndex=0;s>=0&&Fe.test(t);)t=t.replace(Fe,i),Fe.lastIndex=0,s-=1;return t}function B(t,e){var i,s=e._strict;switch(t){case"Q":return Ze;case"DDDD":return Ke;case"YYYY":case"GGGG":case"gggg":return s?$e:Ye;case"Y":case"G":case"g":return Qe;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?Je:Be;case"S":if(s)return Ze;case"SS":if(s)return qe;case"SSS":if(s)return Ke;case"DDD":return He;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ge;case"a":case"A":return P(e._l)._meridiemParse;case"X":return Ue;case"Z":case"ZZ":return je;case"T":return Ve;case"SSSS":return We;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?qe:Re;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Re;case"Do":return Xe;default:return i=new RegExp(K(q(t.replace("\\","")),"i"))}}function W(t){t=t||"";var e=t.match(je)||[],i=e[e.length-1]||[],s=(i+"").match(oi)||["-",0,0],o=+(60*s[1])+C(s[2]);return"+"===s[0]?-o:o}function G(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Me]=3*(C(e)-1));break;case"M":case"MM":null!=e&&(o[Me]=C(e)-1);break;case"MMM":case"MMMM":s=P(i._l).monthsParse(e),null!=s?o[Me]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ce]=C(e));break;case"Do":null!=e&&(o[Ce]=C(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=C(e));break;case"YY":o[Se]=ve.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Se]=C(e);break;case"a":case"A":i._isPm=P(i._l).isPM(e);break;case"H":case"HH":case"h":case"hh":o[De]=C(e);break;case"m":case"mm":o[Ee]=C(e);break;case"s":case"ss":o[Te]=C(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Le]=C(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=W(e);break;case"dd":case"ddd":case"dddd":s=P(i._l).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]=C(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=ve.parseTwoDigitYear(e)}}function j(t){var e,i,s,o,n,a,h,d;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Se],re(ve(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(d=P(t._l),n=d._week.dow,a=d._week.doy,i=r(e.gg,t._a[Se],re(ve(),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=ae(i,s,o,a,n),t._a[Se]=h.year,t._dayOfYear=h.dayOfYear}function V(t){var e,i,s,o,n=[];if(!t._d){for(s=X(t),t._w&&null==t._a[Ce]&&null==t._a[Me]&&j(t),t._dayOfYear&&(o=r(t._a[Se],s[Se]),t._dayOfYear>T(o)&&(t._pf._overflowDayOfYear=!0),i=ie(o,0,t._dayOfYear),t._a[Me]=i.getUTCMonth(),t._a[Ce]=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?ie:ee).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function U(t){var e;t._d||(e=S(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],V(t))}function X(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function Z(t){if(t._f===ve.ISO_8601)return void J(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=P(t._l),a=""+t._i,h=a.length,d=0;for(s=Y(t._f,r).match(Pe)||[],e=0;e0&&t._pf.unusedInput.push(n),a=a.slice(a.indexOf(i)+i.length),d+=i.length),pi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),G(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._isPm&&t._a[De]<12&&(t._a[De]+=12),t._isPm===!1&&12===t._a[De]&&(t._a[De]=0),V(t),O(t)}function q(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function K(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(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));f(t,i||e)}function J(t){var e,i,s=t._i,o=ti.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ii.length;i>e;e++)if(ii[e][1].exec(s)){t._f=ii[e][0]+(o[6]||" ");break}for(e=0,i=si.length;i>e;e++)if(si[e][1].exec(s)){t._f+=si[e][0];break}s.match(je)&&(t._f+="Z"),Z(t)}else t._isValid=!1}function Q(t){J(t),t._isValid===!1&&(delete t._isValid,ve.createFromInputFallback(t))}function te(t){var e=t._i,i=Ie.exec(e);e===n?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?Q(t):b(e)?(t._a=e.slice(0),V(t)):_(e)?t._d=new Date(+e):"object"==typeof e?U(t):"number"==typeof e?t._d=new Date(e):ve.createFromInputFallback(t)}function ee(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ie(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(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 oe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ne(t,e,i){var s=we(Math.abs(t)/1e3),o=we(s/60),n=we(o/60),r=we(n/24),a=we(r/365),h=s0,h[4]=i,oe.apply({},h)}function re(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=ve(t).add("d",n),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ae(t,e,i,s,o){var n,r,a=ie(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:T(t-1)+r}}function he(t){var e=t._i,i=t._f;return null===e||i===n&&""===e?ve.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=P().preparse(e)),ve.isMoment(e)?(t=g(e),t._d=new Date(+e._d)):i?b(i)?$(t):Z(t):te(t),new p(t))}function de(t,e){var i,s;if(1===e.length&&b(e[0])&&(e=e[0]),!e.length)return ve();for(i=e[0],s=1;s=0?"+":"-";return e+v(Math.abs(t),6)},gg:function(){return v(this.weekYear()%100,2)},gggg:function(){return v(this.weekYear(),4)},ggggg:function(){return v(this.weekYear(),5)},GG:function(){return v(this.isoWeekYear()%100,2)},GGGG:function(){return v(this.isoWeekYear(),4)},GGGGG:function(){return v(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().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 C(this.milliseconds()/100)},SS:function(){return v(C(this.milliseconds()/10),2)},SSS:function(){return v(this.milliseconds(),3)},SSSS:function(){return v(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+":"+v(C(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+v(C(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},ui=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];li.length;)be=li.pop(),pi[be+"o"]=l(pi[be],be);for(;ci.length;)be=ci.pop(),pi[be+be]=d(pi[be],2);for(pi.DDDD=d(pi.DDD,3),f(c.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=ve.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=ve([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 re(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),ve=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=a(),he(o)},ve.suppressDeprecationWarnings=!1,ve.createFromInputFallback=h("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)}),ve.min=function(){var t=[].slice.call(arguments,0);return de("isBefore",t)},ve.max=function(){var t=[].slice.call(arguments,0);return de("isAfter",t)},ve.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=a(),he(o).utc()},ve.unix=function(t){return ve(1e3*t)},ve.duration=function(t,e){var i,s,o,n=t,r=null;return ve.isDuration(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=Ae.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:C(r[Ce])*i,h:C(r[De])*i,m:C(r[Ee])*i,s:C(r[Te])*i,ms:C(r[Le])*i}):(r=ze.exec(t))&&(i="-"===r[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},n={y:o(r[2]),M:o(r[3]),d:o(r[4]),h:o(r[5]),m:o(r[6]),s:o(r[7]),w:o(r[8])}),s=new u(n),ve.isDuration(t)&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},ve.version=_e,ve.defaultFormat=ei,ve.ISO_8601=function(){},ve.momentProperties=Ne,ve.updateOffset=function(){},ve.relativeTimeThreshold=function(t,e){return di[t]===n?!1:(di[t]=e,!0)},ve.lang=function(t,e){var i;return t?(e?A(k(t),e):null===e?(z(t),t="en"):Oe[t]||P(t),i=ve.duration.fn._lang=ve.fn._lang=P(t),i._abbr):ve.fn._lang._abbr},ve.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),P(t)},ve.isMoment=function(t){return t instanceof p||null!=t&&t.hasOwnProperty("_isAMomentObject")},ve.isDuration=function(t){return t instanceof u},be=ui.length-1;be>=0;--be)M(ui[be]);ve.normalizeUnits=function(t){return w(t)},ve.invalid=function(t){var e=ve.utc(0/0);return null!=t?f(e._pf,t):e._pf.userInvalidated=!0,e},ve.parseZone=function(){return ve.apply(null,arguments).parseZone()},ve.parseTwoDigitYear=function(t){return C(t)+(C(t)>68?1900:2e3)},f(ve.fn=p.prototype,{clone:function(){return ve(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("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=ve(this).utc();return 00:!1},parsingFlags:function(){return f({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=H(this,t||ve.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,-1),this},diff:function(t,e,i){var s,o,n=I(t,this),r=6e4*(this.zone()-n.zone());return e=w(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-ve(this).startOf("month")-(n-ve(n).startOf("month")))/s,o-=6e4*(this.zone()-ve(this).startOf("month").zone()-(n.zone()-ve(n).startOf("month").zone()))/s,"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:m(o)},from:function(t,e){return ve.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(ve(),t)},calendar:function(t){var e=t||ve(),i=I(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.lang().calendar(o,this))},isLeapYear:function(){return L(this.year())},isDST:function(){return this.zone()+ve(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+ve(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+I(t,this).startOf(e)},min:h("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),this>t?this:t}),max:h("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i=this._offset||0;return null==t?this._isUTC?i:this._d.getTimezoneOffset():("string"==typeof t&&(t=W(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,i!==t&&(!e||this._changeInProgress?y(this,ve.duration(i-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,ve.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?ve(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return D(this.year(),this.month())},dayOfYear:function(t){var e=we((ve(this).startOf("day")-ve(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},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=re(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=re(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=re(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this.day()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return E(this.year(),1,4)},weeksInYear:function(){var t=this._lang._week;return E(this.year(),t.dow,t.doy)},get:function(t){return t=w(t),this[t]()},set:function(t,e){return t=w(t),"function"==typeof this[t]&&this[t](e),this},lang:function(t){return t===n?this._lang:(this._lang=P(t),this)}}),ve.fn.millisecond=ve.fn.milliseconds=ue("Milliseconds",!1),ve.fn.second=ve.fn.seconds=ue("Seconds",!1),ve.fn.minute=ve.fn.minutes=ue("Minutes",!1),ve.fn.hour=ve.fn.hours=ue("Hours",!0),ve.fn.date=ue("Date",!0),ve.fn.dates=h("dates accessor is deprecated. Use date instead.",ue("Date",!0)),ve.fn.year=ue("FullYear",!0),ve.fn.years=h("years accessor is deprecated. Use year instead.",ue("FullYear",!0)),ve.fn.days=ve.fn.day,ve.fn.months=ve.fn.month,ve.fn.weeks=ve.fn.week,ve.fn.isoWeeks=ve.fn.isoWeek,ve.fn.quarters=ve.fn.quarter,ve.fn.toJSON=ve.fn.toISOString,f(ve.duration.fn=u.prototype,{_bubble:function(){var t,e,i,s,o=this._milliseconds,n=this._days,r=this._months,a=this._data;a.milliseconds=o%1e3,t=m(o/1e3),a.seconds=t%60,e=m(t/60),a.minutes=e%60,i=m(e/60),a.hours=i%24,n+=m(i/24),a.days=n%30,r+=m(n/30),a.months=r%12,s=m(r/12),a.years=s},weeks:function(){return m(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)},humanize:function(t){var e=+this,i=ne(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},add:function(t,e){var i=ve.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=ve.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=w(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=w(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:ve.fn.lang,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"}});for(be in ni)ni.hasOwnProperty(be)&&(ge(be,ni[be]),fe(be.toLowerCase()));ge("Weeks",6048e5),ve.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},ve.lang("en",{ordinal:function(t){var e=t%10,i=1===C(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),ke?o.exports=ve:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(xe.moment=ye),ve}.call(e,i,e,o),!(s!==n&&(o.exports=s)),me(!0))}).call(this)}).call(e,function(){return this}(),i(61)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",g=a.POINTER_PEN="pen",m=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[m]=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(g,s)&&(o=g),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[g]=i===(e.MSPOINTER_TYPE_PEN||g),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,m,function(t){i.enabled&&t.eventType==m?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[m],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case m:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case m:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case m: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.mass>n.from.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.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]); -for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){if(this.boundFunction&&this.off("select",this.boundFunction),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=""+this.constants.labels.add+"
"+this.constants.labels.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+this.constants.labels.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.del+"");var t=document.getElementById("network-manipulate-addNode");t.onclick=this._createAddNodeToolbar.bind(this);var e=document.getElementById("network-manipulate-connectNode");if(e.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var i=document.getElementById("network-manipulate-editNode");i.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var i=document.getElementById("network-manipulate-editEdge");i.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var s=document.getElementById("network-manipulate-delete");s.onclick=this._deleteSelected.bind(this)}var o=document.getElementById("network-manipulation-closeDiv");o.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+this.constants.labels.edit+"";var n=document.getElementById("network-manipulate-editModeButton");n.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.addDescription+"";var t=document.getElementById("network-manipulate-back");t.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,this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.linkDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes(),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.editEdgeDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);null!=e&&(e.clusterSize>1?alert("Cannot create edges to a cluster."):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert("Cannot create edges to a cluster."):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add)if(2==this.triggerFunctions.add.length){var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.addError),this._createManipulatorBar(),this.moving=!0,this.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){var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.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){var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(this.triggerFunctions.edit&&1==this.editMode){var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.group,shape:t.shape,color:{background:t.color.background,border:t.color.border,highlight:{background:t.color.highlight.background,border:t.color.highlight.border}}};if(2==this.triggerFunctions.edit.length){var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.editError)}else alert(this.constants.labels.editBoundError)},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.labels.deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};(this.triggerFunctions.del.length=2)?this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()}):alert(this.constants.labels.deleteError)}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=i(1);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=0;i0){"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,e.length>1&&this._setLevel(t+1,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); +}},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&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.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(N=C.NULL,O="";" "==L||" "==L||"\n"==L||"\r"==L;)o();do{var t=!1;if("#"==L){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=L&&"\n"!=L;)o();t=!0}}if("/"==L&&"/"==n()){for(;""!=L&&"\n"!=L;)o();t=!0}if("/"==L&&"*"==n()){for(;""!=L;){if("*"==L&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==L||" "==L||"\n"==L||"\r"==L;)o()}while(t);if(""==L)return void(N=C.DELIMITER);var i=L+n();if(D[i])return N=C.DELIMITER,O=i,o(),void o();if(D[L])return N=C.DELIMITER,O=L,void o();if(r(L)||"-"==L){for(O+=L,o();r(L);)O+=L,o();return"false"==O?O=!1:"true"==O?O=!0:isNaN(Number(O))||(O=Number(O)),void(N=C.IDENTIFIER)}if('"'==L){for(o();""!=L&&('"'!=L||'"'==L&&'"'==n());)O+=L,'"'==L&&o(),o();if('"'!=L)throw x('End of string " expected');return o(),void(N=C.IDENTIFIER)}for(N=C.UNKNOWN;""!=L;)O+=L,o();throw new SyntaxError('Syntax error in part "'+w(O,30)+'"')}function u(){var t={};if(s(),p(),"strict"==O&&(t.strict=!0,p()),("graph"==O||"digraph"==O)&&(t.type=O,p()),N==C.IDENTIFIER&&(t.id=O,p()),"{"!=O)throw x("Angle bracket { expected");if(p(),f(t),"}"!=O)throw x("Angle bracket } expected");if(p(),""!==O)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==O&&"}"!=O;)g(t),";"==O&&p()}function g(t){var e=m(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=C.IDENTIFIER)throw x("Identifier expected");var s=O;if(p(),"="==O){if(p(),N!=C.IDENTIFIER)throw x("Identifier expected");t[s]=O,p()}else y(t,s)}}function m(t){var e=null;if("subgraph"==O&&(e={},e.type="subgraph",p(),N==C.IDENTIFIER&&(e.id=O,p())),"{"==O){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=O)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"==O?(p(),t.node=_(),"node"):"edge"==O?(p(),t.edge=_(),"edge"):"graph"==O?(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(;"->"==O||"--"==O;){var i,s=O;p();var o=m(t);if(o)i=o;else{if(N!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=O,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==O;){for(p(),t={};""!==O&&"]"!=O;){if(N!=C.IDENTIFIER)throw x("Attribute name expected");var e=O;if(p(),"="!=O)throw x("Equal sign = expected");if(p(),N!=C.IDENTIFIER)throw x("Attribute value expected");var i=O;h(t,e,i),p(),","==O&&p()}if("]"!=O)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(O,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},D={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,L="",O="",N=C.NULL,k=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},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){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,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),g=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,g,p,g),this.bezierCurveTo(p-h,g,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(56),o=i(50),n=i(51),r=i(52),a=i(53),h=i(54),d=i(55);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.containerElement.insertBefore(this.manipulationDiv,this.frame)),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.containerElement.insertBefore(this.editModeDiv,this.frame)),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.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in D)t[e]?i=!0:D[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function g(t,e,s,o){D[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++D[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return g(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},D={},E=!1,T=!1,L=1;20>L;++L)_[111+L]="f"+L;for(L=0;9>=L;++L)_[L+96]=L;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var O={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=O},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",f=a.POINTER_TOUCH="touch",g=a.POINTER_PEN="pen",m=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return +}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[m]=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(g,s)&&(o=g),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[g]=i===(e.MSPOINTER_TYPE_PEN||g),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,m,function(t){i.enabled&&t.eventType==m?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[m],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case m:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case m:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case m:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t,e){function i(){ve.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}var s=!0;return f(function(){return s&&(i(),s=!1),e.apply(this,arguments)},e)}function d(t,e){return function(i){return v(t.call(this,i),e)}}function l(t,e){return function(i){return this.lang().ordinal(t.call(this,i),e)}}function c(){}function p(t){O(t),f(this,t)}function u(t){var e=S(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._bubble()}function f(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function g(t){var e,i={};for(e in t)t.hasOwnProperty(e)&&Ne.hasOwnProperty(e)&&(i[e]=t[e]);return i}function m(t){return 0>t?Math.ceil(t):Math.floor(t)}function v(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&C(t[s])!==C(e[s]))&&r++;return r+n}function w(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ri[t]||ai[e]||e}return t}function S(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=w(i),e&&(s[e]=t[i]));return s}function M(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}ve[t]=function(s,o){var r,a,h=ve.fn._lang[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=ve().utc().set(i,t);return h.call(ve.fn._lang,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function C(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function D(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function E(t,e,i){return re(ve([t,11,31+e-i]),e,i).week}function T(t){return L(t)?366:365}function L(t){return t%4===0&&t%100!==0||t%400===0}function O(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Me]<0||t._a[Me]>11?Me:t._a[Ce]<1||t._a[Ce]>D(t._a[Se],t._a[Me])?Ce:t._a[De]<0||t._a[De]>23?De:t._a[Ee]<0||t._a[Ee]>59?Ee:t._a[Te]<0||t._a[Te]>59?Te:t._a[Le]<0||t._a[Le]>999?Le:-1,t._pf._overflowDayOfYear&&(Se>e||e>Ce)&&(e=Ce),t._pf.overflow=e)}function N(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 k(t){return t?t.toLowerCase().replace("_","-"):t}function I(t,e){return e._isUTC?ve(t).zone(e._offset||0):ve(t).local()}function A(t,e){return e.abbr=t,Oe[t]||(Oe[t]=new c),Oe[t].set(e),Oe[t]}function z(t){delete Oe[t]}function P(t){var e,s,o,n,r=0,a=function(t){if(!Oe[t]&&ke)try{i(57)("./"+t)}catch(e){}return Oe[t]};if(!t)return ve.fn._lang;if(!b(t)){if(s=a(t))return s;t=[t]}for(;r0;){if(s=a(n.slice(0,e).join("-")))return s;if(o&&o.length>=e&&x(n,o,!0)>=e-1)break;e--}r++}return ve.fn._lang}function F(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function R(t){var e,i,s=t.match(Pe);for(e=0,i=s.length;i>e;e++)s[e]=pi[s[e]]?pi[s[e]]:F(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 H(t,e){return t.isValid()?(e=Y(e,t.lang()),hi[e]||(hi[e]=R(e)),hi[e](t)):t.lang().invalidDate()}function Y(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Fe.lastIndex=0;s>=0&&Fe.test(t);)t=t.replace(Fe,i),Fe.lastIndex=0,s-=1;return t}function B(t,e){var i,s=e._strict;switch(t){case"Q":return Ze;case"DDDD":return Ke;case"YYYY":case"GGGG":case"gggg":return s?$e:Ye;case"Y":case"G":case"g":return Qe;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?Je:Be;case"S":if(s)return Ze;case"SS":if(s)return qe;case"SSS":if(s)return Ke;case"DDD":return He;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ge;case"a":case"A":return P(e._l)._meridiemParse;case"X":return Ue;case"Z":case"ZZ":return je;case"T":return Ve;case"SSSS":return We;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?qe:Re;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Re;case"Do":return Xe;default:return i=new RegExp(K(q(t.replace("\\","")),"i"))}}function W(t){t=t||"";var e=t.match(je)||[],i=e[e.length-1]||[],s=(i+"").match(oi)||["-",0,0],o=+(60*s[1])+C(s[2]);return"+"===s[0]?-o:o}function G(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Me]=3*(C(e)-1));break;case"M":case"MM":null!=e&&(o[Me]=C(e)-1);break;case"MMM":case"MMMM":s=P(i._l).monthsParse(e),null!=s?o[Me]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ce]=C(e));break;case"Do":null!=e&&(o[Ce]=C(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=C(e));break;case"YY":o[Se]=ve.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Se]=C(e);break;case"a":case"A":i._isPm=P(i._l).isPM(e);break;case"H":case"HH":case"h":case"hh":o[De]=C(e);break;case"m":case"mm":o[Ee]=C(e);break;case"s":case"ss":o[Te]=C(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Le]=C(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=W(e);break;case"dd":case"ddd":case"dddd":s=P(i._l).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]=C(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=ve.parseTwoDigitYear(e)}}function j(t){var e,i,s,o,n,a,h,d;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Se],re(ve(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(d=P(t._l),n=d._week.dow,a=d._week.doy,i=r(e.gg,t._a[Se],re(ve(),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=ae(i,s,o,a,n),t._a[Se]=h.year,t._dayOfYear=h.dayOfYear}function V(t){var e,i,s,o,n=[];if(!t._d){for(s=X(t),t._w&&null==t._a[Ce]&&null==t._a[Me]&&j(t),t._dayOfYear&&(o=r(t._a[Se],s[Se]),t._dayOfYear>T(o)&&(t._pf._overflowDayOfYear=!0),i=ie(o,0,t._dayOfYear),t._a[Me]=i.getUTCMonth(),t._a[Ce]=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?ie:ee).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function U(t){var e;t._d||(e=S(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],V(t))}function X(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function Z(t){if(t._f===ve.ISO_8601)return void J(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=P(t._l),a=""+t._i,h=a.length,d=0;for(s=Y(t._f,r).match(Pe)||[],e=0;e0&&t._pf.unusedInput.push(n),a=a.slice(a.indexOf(i)+i.length),d+=i.length),pi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),G(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._isPm&&t._a[De]<12&&(t._a[De]+=12),t._isPm===!1&&12===t._a[De]&&(t._a[De]=0),V(t),O(t)}function q(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function K(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(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));f(t,i||e)}function J(t){var e,i,s=t._i,o=ti.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ii.length;i>e;e++)if(ii[e][1].exec(s)){t._f=ii[e][0]+(o[6]||" ");break}for(e=0,i=si.length;i>e;e++)if(si[e][1].exec(s)){t._f+=si[e][0];break}s.match(je)&&(t._f+="Z"),Z(t)}else t._isValid=!1}function Q(t){J(t),t._isValid===!1&&(delete t._isValid,ve.createFromInputFallback(t))}function te(t){var e=t._i,i=Ie.exec(e);e===n?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?Q(t):b(e)?(t._a=e.slice(0),V(t)):_(e)?t._d=new Date(+e):"object"==typeof e?U(t):"number"==typeof e?t._d=new Date(e):ve.createFromInputFallback(t)}function ee(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ie(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(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 oe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ne(t,e,i){var s=we(Math.abs(t)/1e3),o=we(s/60),n=we(o/60),r=we(n/24),a=we(r/365),h=s0,h[4]=i,oe.apply({},h)}function re(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=ve(t).add("d",n),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ae(t,e,i,s,o){var n,r,a=ie(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:T(t-1)+r}}function he(t){var e=t._i,i=t._f;return null===e||i===n&&""===e?ve.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=P().preparse(e)),ve.isMoment(e)?(t=g(e),t._d=new Date(+e._d)):i?b(i)?$(t):Z(t):te(t),new p(t))}function de(t,e){var i,s;if(1===e.length&&b(e[0])&&(e=e[0]),!e.length)return ve();for(i=e[0],s=1;s=0?"+":"-";return e+v(Math.abs(t),6)},gg:function(){return v(this.weekYear()%100,2)},gggg:function(){return v(this.weekYear(),4)},ggggg:function(){return v(this.weekYear(),5)},GG:function(){return v(this.isoWeekYear()%100,2)},GGGG:function(){return v(this.isoWeekYear(),4)},GGGGG:function(){return v(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().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 C(this.milliseconds()/100)},SS:function(){return v(C(this.milliseconds()/10),2)},SSS:function(){return v(this.milliseconds(),3)},SSSS:function(){return v(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+":"+v(C(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+v(C(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},ui=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];li.length;)be=li.pop(),pi[be+"o"]=l(pi[be],be);for(;ci.length;)be=ci.pop(),pi[be+be]=d(pi[be],2);for(pi.DDDD=d(pi.DDD,3),f(c.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=ve.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=ve([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 re(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),ve=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=a(),he(o)},ve.suppressDeprecationWarnings=!1,ve.createFromInputFallback=h("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)}),ve.min=function(){var t=[].slice.call(arguments,0);return de("isBefore",t)},ve.max=function(){var t=[].slice.call(arguments,0);return de("isAfter",t)},ve.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=a(),he(o).utc()},ve.unix=function(t){return ve(1e3*t)},ve.duration=function(t,e){var i,s,o,n=t,r=null;return ve.isDuration(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=Ae.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:C(r[Ce])*i,h:C(r[De])*i,m:C(r[Ee])*i,s:C(r[Te])*i,ms:C(r[Le])*i}):(r=ze.exec(t))&&(i="-"===r[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},n={y:o(r[2]),M:o(r[3]),d:o(r[4]),h:o(r[5]),m:o(r[6]),s:o(r[7]),w:o(r[8])}),s=new u(n),ve.isDuration(t)&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},ve.version=_e,ve.defaultFormat=ei,ve.ISO_8601=function(){},ve.momentProperties=Ne,ve.updateOffset=function(){},ve.relativeTimeThreshold=function(t,e){return di[t]===n?!1:(di[t]=e,!0)},ve.lang=function(t,e){var i;return t?(e?A(k(t),e):null===e?(z(t),t="en"):Oe[t]||P(t),i=ve.duration.fn._lang=ve.fn._lang=P(t),i._abbr):ve.fn._lang._abbr +},ve.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),P(t)},ve.isMoment=function(t){return t instanceof p||null!=t&&t.hasOwnProperty("_isAMomentObject")},ve.isDuration=function(t){return t instanceof u},be=ui.length-1;be>=0;--be)M(ui[be]);ve.normalizeUnits=function(t){return w(t)},ve.invalid=function(t){var e=ve.utc(0/0);return null!=t?f(e._pf,t):e._pf.userInvalidated=!0,e},ve.parseZone=function(){return ve.apply(null,arguments).parseZone()},ve.parseTwoDigitYear=function(t){return C(t)+(C(t)>68?1900:2e3)},f(ve.fn=p.prototype,{clone:function(){return ve(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("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=ve(this).utc();return 00:!1},parsingFlags:function(){return f({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=H(this,t||ve.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,-1),this},diff:function(t,e,i){var s,o,n=I(t,this),r=6e4*(this.zone()-n.zone());return e=w(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-ve(this).startOf("month")-(n-ve(n).startOf("month")))/s,o-=6e4*(this.zone()-ve(this).startOf("month").zone()-(n.zone()-ve(n).startOf("month").zone()))/s,"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:m(o)},from:function(t,e){return ve.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(ve(),t)},calendar:function(t){var e=t||ve(),i=I(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.lang().calendar(o,this))},isLeapYear:function(){return L(this.year())},isDST:function(){return this.zone()+ve(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+ve(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+I(t,this).startOf(e)},min:h("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),this>t?this:t}),max:h("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i=this._offset||0;return null==t?this._isUTC?i:this._d.getTimezoneOffset():("string"==typeof t&&(t=W(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,i!==t&&(!e||this._changeInProgress?y(this,ve.duration(i-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,ve.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?ve(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return D(this.year(),this.month())},dayOfYear:function(t){var e=we((ve(this).startOf("day")-ve(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},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=re(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=re(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=re(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this.day()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return E(this.year(),1,4)},weeksInYear:function(){var t=this._lang._week;return E(this.year(),t.dow,t.doy)},get:function(t){return t=w(t),this[t]()},set:function(t,e){return t=w(t),"function"==typeof this[t]&&this[t](e),this},lang:function(t){return t===n?this._lang:(this._lang=P(t),this)}}),ve.fn.millisecond=ve.fn.milliseconds=ue("Milliseconds",!1),ve.fn.second=ve.fn.seconds=ue("Seconds",!1),ve.fn.minute=ve.fn.minutes=ue("Minutes",!1),ve.fn.hour=ve.fn.hours=ue("Hours",!0),ve.fn.date=ue("Date",!0),ve.fn.dates=h("dates accessor is deprecated. Use date instead.",ue("Date",!0)),ve.fn.year=ue("FullYear",!0),ve.fn.years=h("years accessor is deprecated. Use year instead.",ue("FullYear",!0)),ve.fn.days=ve.fn.day,ve.fn.months=ve.fn.month,ve.fn.weeks=ve.fn.week,ve.fn.isoWeeks=ve.fn.isoWeek,ve.fn.quarters=ve.fn.quarter,ve.fn.toJSON=ve.fn.toISOString,f(ve.duration.fn=u.prototype,{_bubble:function(){var t,e,i,s,o=this._milliseconds,n=this._days,r=this._months,a=this._data;a.milliseconds=o%1e3,t=m(o/1e3),a.seconds=t%60,e=m(t/60),a.minutes=e%60,i=m(e/60),a.hours=i%24,n+=m(i/24),a.days=n%30,r+=m(n/30),a.months=r%12,s=m(r/12),a.years=s},weeks:function(){return m(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)},humanize:function(t){var e=+this,i=ne(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},add:function(t,e){var i=ve.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=ve.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=w(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=w(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:ve.fn.lang,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"}});for(be in ni)ni.hasOwnProperty(be)&&(ge(be,ni[be]),fe(be.toLowerCase()));ge("Weeks",6048e5),ve.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},ve.lang("en",{ordinal:function(t){var e=t%10,i=1===C(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),ke?o.exports=ve:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(xe.moment=ye),ve}.call(e,i,e,o),!(s!==n&&(o.exports=s)),me(!0))}).call(this)}).call(e,function(){return this}(),i(61)(t))},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.mass>n.from.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.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges) +}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){if(this.boundFunction&&this.off("select",this.boundFunction),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=""+this.constants.labels.add+"
"+this.constants.labels.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+this.constants.labels.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.del+"");var t=document.getElementById("network-manipulate-addNode");t.onclick=this._createAddNodeToolbar.bind(this);var e=document.getElementById("network-manipulate-connectNode");if(e.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var i=document.getElementById("network-manipulate-editNode");i.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var i=document.getElementById("network-manipulate-editEdge");i.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var s=document.getElementById("network-manipulate-delete");s.onclick=this._deleteSelected.bind(this)}var o=document.getElementById("network-manipulation-closeDiv");o.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+this.constants.labels.edit+"";var n=document.getElementById("network-manipulate-editModeButton");n.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.addDescription+"";var t=document.getElementById("network-manipulate-back");t.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,this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.linkDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes(),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.editEdgeDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);null!=e&&(e.clusterSize>1?alert("Cannot create edges to a cluster."):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert("Cannot create edges to a cluster."):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add)if(2==this.triggerFunctions.add.length){var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.addError),this._createManipulatorBar(),this.moving=!0,this.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){var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.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){var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(this.triggerFunctions.edit&&1==this.editMode){var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.group,shape:t.shape,color:{background:t.color.background,border:t.color.border,highlight:{background:t.color.highlight.background,border:t.color.highlight.border}}};if(2==this.triggerFunctions.edit.length){var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.editError)}else alert(this.constants.labels.editBoundError)},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.labels.deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};(this.triggerFunctions.del.length=2)?this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()}):alert(this.constants.labels.deleteError)}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=i(1);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=0;i0){"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,e.length>1&&this._setLevel(t+1,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,e,i){function s(t){return i(o(t))}function o(t){return n[t]||function(){throw new Error("Cannot find module '"+t+"'.")}()}var n={};s.keys=function(){return Object.keys(n)},s.resolve=o,t.exports=s},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,g=this.constants.physics.repulsion.nodeDistance,m=g;for(d=0;di&&(r=.5*m>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]],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.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.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;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,g=.5*(o+r),m=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:g-f,maxX:g+f,minY:m-f,maxY:m+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]],this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.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 diff --git a/lib/timeline/Graph2d.js b/lib/timeline/Graph2d.js index 86efdc56..004305ea 100644 --- a/lib/timeline/Graph2d.js +++ b/lib/timeline/Graph2d.js @@ -257,22 +257,20 @@ Graph2d.prototype.isGroupVisible = function(groupId) { * When no maximum is found, max==null */ Graph2d.prototype.getItemRange = function() { + var min = null; + var max = null; + // calculate min from start filed - var dataset = this.itemsData.getDataSet(), - min = null, - max = null; - - if (dataset) { - // calculate the minimum value of the field 'start' - var minItem = dataset.min('x'); - min = minItem ? util.convert(minItem.x, 'Date').valueOf() : null; - // Note: we convert first to Date and then to number because else - // a conversion from ISODate to Number will fail - - // calculate maximum value of fields 'start' and 'end' - var maxStartItem = dataset.max('x'); - if (maxStartItem) { - max = util.convert(maxStartItem.x, 'Date').valueOf(); + for (var groupId in this.linegraph.groups) { + if (this.linegraph.groups.hasOwnProperty(groupId)) { + if (this.linegraph.groups[groupId].visible == true) { + for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { + var item = this.linegraph.groups[groupId].itemsData[i]; + var value = util.convert(item.x, 'Date').valueOf(); + min = min == null ? value : min > value ? value : min; + max = max == null ? value : max < value ? value : max; + } + } } }